二叉树遍历非递归分析并实现

不用递归实现用堆栈实现。

先来画个二叉树遍历图:

遍历树结构
遍历树结构

先序、中序、后序遍历二叉树路径都一样,差别是第1次访问到元素先序,第2次访问到元素中序,第3次访问到元素后序。

以中序堆栈实现说明算法:

遇到一个结点,压栈,并去遍历它的左子树
当左子树遍历结束后,从栈顶弹出这个结点并访问它
然后按其右指针再去中序遍历该结点的右子树

下面写出先序,中序、后序非递归代码:

具体Stack堆栈结构部份,请转到这篇:用数组实现栈数据结构 ?? 链式存储如何实现堆栈

先序遍历

中序遍历

后序遍历