二叉树的创建与遍历

#include<iostream>
using namespace std;

typedef char ELEMTYPE;

//二叉链表
typedef struct BiTNode
{
ELEMTYPE data;
struct BiTNode *lChild;
struct BiTNode *rChild;

}BiTNode,*BiTPtr;

//创建二叉树,使用前序遍历的方式输入数据
void CreateBiTree(BiTPtr *T)
{
char c;
scanf("%c",&c);
if(‘ ‘ == c)
{
*T = NULL;
}
else
{
*T = (BiTPtr)malloc(sizeof(BiTNode));
(*T)->data = c;
CreateBiTree(&(*T)->lChild);
CreateBiTree(&(*T)->rChild);
}
}

//访问二叉树的具体操作
void visit(ELEMTYPE e,int level)
{

printf("%c在第%d层\n",e,level);

}

//遍历二叉树
void preOrderTraverse(BiTPtr T,int level)
{
if(T)
{
visit(T->data,level);
preOrderTraverse(T->lChild,level+1);
preOrderTraverse(T->rChild,level+1);
}
}

void main()
{
BiTPtr p = NULL;
int level =1;
CreateBiTree(&p);
preOrderTraverse(p,level);

}

时间: 2024-10-18 22:07:29

二叉树的创建与遍历的相关文章

二叉树的创建、遍历

二叉树的创建.这里采用最简单的情况,创建完全二叉树,用数组来保存: 1 struct TreeNode 2 { 3 int val; 4 TreeNode *left, *right; 5 TreeNode(int x): val(x), left(NULL), right(NULL) {}; 6 }; 7 8 void CreatTree(TreeNode *root, int idx, int A[], int n) //root结点已分配,idx为根结点的编号 9 { 10 if(2 *

二叉树 二叉树的性质 存储结构 遍历二叉树 C实现二叉树的创建和遍历 线索二叉树

定义 二叉树(binary tree)是n(n>=0)个结点的有限集合,该集合为空集合称为空二叉树,或者有一个根结点和两棵互不相交的,分别称为树根结点的左孩子树和右孩子树组成. 二叉树的特点 每个结点最多有两棵子树,所以二叉树总没有度大于2的结点 左子树和右子树是有顺序的,次数不能任意颠倒 即使树中某结点只有一棵子树,也要区分是左子树还是右子树 特殊的二叉树 1. 斜树 所有的结点都只有左子树的二叉树称为左斜树; 所有的结点都只有右子树的二叉树称为右斜树; 这两者统称为斜树 2. 满二叉树 在一

c/c++二叉树的创建与遍历(非递归遍历左右中,破坏树结构)

二叉树的创建与遍历(非递归遍历左右中,破坏树结构) 创建 二叉树的递归3种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 二叉树的非递归4种遍历方式: 1,先中心,再左树,再右树 2,先左树,再中心,再右树 3,先左树,再右树,再中心 4,层级遍历 二叉树的查找,求高度,求个数,求父节点,复制二叉树,释放二叉树 编译方法,用gcc编译不过去,用g++编译,命令如下: g++ -g nodestack.c nodequeue.c bintree.c

数据结构与算法第10周作业——二叉树的创建和遍历算法

一.二叉树的创建算法(递归方式) 二.二叉树的先序.中序和后序遍历算法 #include<stdio.h>#include<stdlib.h>typedef struct TNode{ struct TNode *lchild; int data; struct TNode *rchild;}TNode,*BTree;void createBiTree(BTree &T){ char x; scanf("%d",&x); if(x!=0) { T

【数据结构之二叉树】二叉树的创建、遍历等操作

二叉树的基本操作: 1.创建二叉树 2.销毁二叉树 3.遍历二叉树:1)前序遍历 2)中序遍历 3)后序遍历 4)层次遍历 4.搜索二叉树 5.删除子叶 6.插入子叶 7.获取左/右子叶的值 8.获取树深度 9.获取叶子结点数 1.创建二叉树 这里创建的是链式存储结构的二叉树,包含数据域,左右两结点的指针域:在读取创建树时,以#代替空格,输入格式的规范为:以前序遍历的顺序输入,如果该结点的左子叶为空,则输入#,以此类推: e.g: -  +         \ a    *    e    f 

Java实现二叉树的创建和遍历操作(有更新)

博主强烈建议跳过分割线前面的部分,直接看下文更新的那些即可. 最近在学习二叉树的相关知识,一开始真的是毫无头绪.本来学的是C++二叉树,但苦于编译器老是出故障,于是就转用Java来实现二叉树的操作.但是二者原理是一致的,而且实现的方式也是大同小异! 下面就让我们来看看代码吧. 1.首先我们需要创建一个二叉树的节点类,便于我们对树的操作,当然了,你也可以在二叉树类的内部将节点类声明为内部类,但是这样会降低操作的灵活性.我才用的是单独创建一个BinaryTreeNode类,代码如下: package

二叉树的创建与遍历浅析

今天初步了解了二叉树的定义和创建及遍历方法,总结一下 #include <iostream>#include <stdio.h>#include <string.h>using namespace std;//二叉树结点的定义typedef struct BTNode{char data;struct BTNode *lc;struct BTNode *rc;}BTNode,*BiTree; void Creat(BiTree &T){    char ch; 

二叉树的创建与遍历(链式存储)

这里采用的是链式存储,每个结点包含三个属性(指向左右孩子的指针和本结点的数据),如果想了解顺序存储二叉树,可以参考http://www.cnblogs.com/-beyond/p/6065189.html 采用先序递归创建二叉树,叶子的左右孩子链域为NULL 输入的顺序为:abd--e--c-f--   (-表示空一个空格) #include<iostream> #include<cstdio> using namespace std; struct BiTNode{ BiTNod

二叉树的创建及遍历

输入AB#D##C##回车,或者按照规则自己去输入, 规则就是按前序遍历的方式输入, #include<cstdio> #include<cstdlib> #include<cstring> typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; void Init(BiTree *T){ if(!((*T)=(BiTree)malloc(sizeof(Bi