1、定义二叉树结构
2、定义堆栈结构,用于保存迭代法遍历过程中访问节点。
3、后序遍历时,我们最开始遍历的节点为左子树节点,其次右子树节点,最后根节点。所以,定义堆栈后我们将左子树推送到堆栈。
4、循环处理,当前堆栈不为空时,访问堆栈顶点元素。按照后序遍历流程,如果其右子树未被访问,则应先访问右子树。为了标识右子树是否已被访问,我们定义一个变量保存上次已访问节点。这样当节点没有右子树或右子树已被访问,则访问当前节点并出栈。
5、如果节点的右子树未被访问,则按第3步中的情况将右子树中的左子树节点推送入栈。
6、后序遍历与中序遍历类似,主要区别就是保存上次访问节点,用于判断是否访问当前节点右子树。完整实现如下