后序遍历的递归实现与先序和中序遍历类似,而非递归实现较为复杂,下面会进行详细说明。
如图二叉树,其后序遍历结果为:8 4 5 2 9 10 6 7 3 1
递归实现
void PostOrderTraversal(BinTree BT)
{
if(BT){
PostOrderTraversal(BT->Left);
PostOrderTraversal(BT->Right);
printf("%d ", BT->Date);
}
}
非递归实现
后序遍历的非递归实现较为复杂,这是因为后序遍历需要保证访问一个结点之前先访问其左孩子和右孩子,这为流程控制带来了难题。下面提供两种解决思路:
思路一
当我们判断一个结点能否访问时:1.如果该结点是一个叶子结点(即它的左孩子和右孩子为空),则可以进

这篇博客探讨了二叉树的后序遍历,重点介绍了非递归实现的两种策略。思路一基于结点的左右孩子状态判断访问时机,思路二利用栈辅助,并通过结点的弹出次数判断访问条件。文章提供了具体的代码实现。
最低0.47元/天 解锁文章
476

被折叠的 条评论
为什么被折叠?



