二叉树的3种遍历其实差不多,只是输出时机不一样,都是通过树根找儿子来深搜递归的。
下面是三种遍历的代码:
void first(int p){
if(p==0)
return;
printf("%d ",p);
first(tree[p].l);
first(tree[p].r);
}
void mid(int p){
if(p==0)
return;
mid(tree[p].l);
printf("%d ",p);
mid(tree[p].r);
}
void back(int p){
if(p==0)
return;
back(tree[p].l);
back(tree[p].r);
printf("%d ",p);
}
RT,对于这样一个二叉树,三个程序输出是这样的:
3 1 2 4 8 5 6 7
2 1 8 4 3 6 7 5
2 8 4 1 7 6 5 3