145. 二叉树的后序遍历
给你一棵二叉树的根节点 root
,返回其节点值的 后序遍历 。
示例 1:
1 | 输入:root = [1,null,2,3] |
示例 2:
1 | 输入:root = [] |
示例 3:
1 | 输入:root = [1] |
提示:
- 树中节点的数目在范围
[0, 100]
内 -100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗
题解:
递归写法:
1 | public List<Integer> postorderTraversal(TreeNode root) { |
迭代写法:
因为后序遍历的顺序是左右根,所以只要保证出栈顺序为根右左,然后进行一次反转操作即可。
倒推回来,出栈顺序为根右左,所以入栈顺序即为根左右。
至于为什么要把根节点固定操作,因为这样可以保证根节点的访问顺序和操作顺序保持一致,是在前序遍历的基础上做了修改。
1 | public List<Integer> postorderTraversal(TreeNode root) { |