要想递归遍历二叉树,我们的思路就是
创建二叉树结点类型
二叉树递归创建
二叉树遍历
创建二叉树结点类型:
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) { 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);
}
|
中序和后序是一样的道理,注意我们创建结点的时候实际上是前序创建的,所以要前序输入。