王道5.3_2_3非递归后续遍历
题目大意
给定一个二叉树,返回它的 后序 遍历。
示例:
输入: [1,null,2,3] 1 \ 2 / 3
输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗?
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.思路
构建模板
1 | while( 栈非空 || p 非空) |
填写步骤
- p非空一直左压
- 然后,如果是空的,获取栈的顶端,如果右节点也是空的或者访问了的就是p.right=pre,那么就直接访问当前的,并把p给pop出来,同时设置pre=p,标志访问,*同时设置p=null(否则下一次p会进入if判断,然后一直压)*
- 如果不是空的,并且没有访问,那么把p=p.right,他就会进入之前的if,一直左压
代码实现
1 | /** |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.