后序遍历的操作顺序为:
- 第一步和之前一样,如果二叉树为空,什么都不做
- 后序遍历左子树
- 后序遍历右子树
- 访问根结点
再来回忆下先序和中序,先序为:先根后左再右,中序为:先左再根再右。
根据之前两篇的经验,后序遍历也只不过是换换函数的调用位置。
代码
void foreach_post_tree(BiTree T){
if(T != NULL){
foreach_post_tree(T->lchild);
foreach_post_tree(T->rchild);
printf("%c ",T->data);
}
}
执行结果为:
G D B E F C A
跟视频中结果一致。so easy。
这三种遍历都是比较简洁易懂的,缺点是开销比较大。
有问题肯定就有解决,所以接下来还要学洗二叉树的非递归遍历。