二叉树递归遍历

要想递归遍历二叉树,我们的思路就是

创建二叉树结点类型
二叉树递归创建
二叉树遍历
创建二叉树结点类型:

1
2
3
4
5
6
typedef struct bitree{
int n;
data_type data;
struct bitree *lchild;
struct bitree *rchild;
}bitree_t;

二叉树递归创建:

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
bitree_t *create_binary_tree(int n)//这里的n用来从初始编号  
{
bitree_t *root=NULL;
root=(bitree_t *)malloc(sizeof(bitree_t));
if(NULL==root)
{
printf("malloc failed!!!\n");
return NULL;
}
memset(root,0,sizeof(bitree_t));
root->n=n;
printf("please input %d node data\n",n);
scanf("%c",&root->data);
if(2*n<=N)
{
root->lchild=create_binary_tree(2*n);
}
if((2*n+1)<=N)
{
root->rchild=create_binary_tree(2*n+1);
}
return root;

}

二叉树的遍历:

1
2
3
4
5
6
7
8
9
10
//先序遍历:
void pre_order(bitree_t *root)
{
if(NULL==root)
return;
printf("%d : %c",root->n,root->data);
pre_order(root->lchild);
pre_order(root->rchild);

}

中序和后序是一样的道理,注意我们创建结点的时候实际上是前序创建的,所以要前序输入。

Contents