二叉树的建立以及遍历
二叉树的建立以及遍历
二叉树的建立以及遍历
-
利用递归的方式建立二叉树 并以中序遍历的方式读取数据,根据遍历二叉树的三种方式,只需要在递归时修改访问结点的元素即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
typedef struct Binode{
char data;
struct Binode *Rchild ,*Lchild;
}BiTnode,*BiTree;
void createBTree( BiTree *T)
{
char c ;
scanf("%c",&c);
if(' '==c){
*T=NULL;
}
else{
*T=(BiTnode*)malloc(sizeof(BiTnode));
(*T)->data=c;
createBTree(&(*T)->Lchild);
createBTree(&(*T)->Rchild);
}
}
void visit(char c ,int level){
printf("%c %d\n",c,level);
}
void preOrderTraverse(BiTree T, int level)
{
if(T)
{
preOrderTraverse(T->Lchild,level+1);
visit(T->data,level);
preOrderTraverse(T->Rchild,level+1);
}
}
int main()
{
BiTree t ;
t=NULL;
printf("创建二叉树,以空格代表子结点为空:\n");
createBTree(&t);
preOrderTraverse(t,1);
return 0;
}
注意:在此建立二叉树使用的是指针的指针,如果用的时是指针的话,作为形参传递给函数,当函数返回后,函数出栈,也就不能 获得结点信息,而使用二重指针 头节点本身为指针,在函数递归的过程中需要修改本身的值,就需要使用二重指针,这类似于利用函数交换值得思想。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.