给定一个二叉树,返回它的 后序 遍历。
示例:
1 | 输入: [1,null,2,3] |
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
解决方案
方法一:递归
1 | /*public class TreeNode { |
方法二:迭代
- 思路:遇到一个节点,将其进栈,并将其所有左节点一一进栈。变量parent表示上一次访问过的节点。当栈不为空时,循环执行如下操作:将栈顶元素node出栈,若node的右孩子就是parent,表示node没有右孩子或者其右子树已被访问过,此时可以访问node节点,然后让parent指向node;否则,将node重新压入栈中,并让其指向右孩子,跳出循环。然后重新执行上述过程,直至栈空。
1 | /*public class TreeNode { |