LeetCode 145:二叉树的后序遍历(迭代法)
创作时间:
作者:
@小白创作中心
LeetCode 145:二叉树的后序遍历(迭代法)
引用
CSDN
1.
https://m.blog.csdn.net/coder_ljw/article/details/144144137
本文将详细讲解LeetCode第145题“二叉树的后序遍历”的解题思路和代码实现。通过对比递归和迭代两种方法,帮助读者更好地理解后序遍历的实现。
题目描述
给你一棵二叉树的根节点 root,返回其节点值的后序遍历。
示例
示例 1:
输入:root = [1,null,2,3]
输出:[3,2,1]
解释:
示例 2:
输入:root = [1,2,3,4,5,null,8,null,null,6,7,9]
输出:[4,6,7,5,2,9,8,3,1]
解释:
示例 3:
输入:root = []
输出:[]
示例 4:
输入:root = [1]
输出:[1]
提示:
- 树中节点的数目在范围 [0, 100] 内
- -100 <= Node.val <= 100
进阶:递归算法很简单,你可以通过迭代算法完成吗?
求解思路
栈实现
- 创建了一个
ArrayList用于存储后序遍历的结果。如果根节点为空,直接返回这个空列表。 - 接着创建了一个栈
stack,用于模拟递归调用栈,存放待访问的二叉树节点。同时定义了lastVisited变量,它的作用是记录上一次访问的节点,以便后续判断当前节点的左右子树是否已经被访问过了。 - 将根节点压入栈后,进入循环,只要栈不为空,就执行以下操作,取出栈顶节点(但不立即弹出,通过
peek方法),然后进行判断:
- 如果当前栈顶节点满足左子树和右子树都为空,或者它的左右子树节点都是上一次已经访问过的节点(通过和
lastVisited对比判断),那么说明这个节点可以被访问了,将其值添加到结果列表中,然后弹出栈顶节点,并更新lastVisited为当前弹出的这个节点,表示它已经被访问过了。 - 如果不满足上述可以直接访问的条件,那么按照后序遍历的顺序要求,先处理右子树(如果存在),将右子树节点压入栈;再处理左子树(如果存在),将左子树节点压入栈,以便后续按照正确顺序进行访问。
- 有了基本的思路,接下来我们就来通过代码来实现一下。
实现代码
class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> res = new ArrayList<Integer>();
if (root == null) {
return res;
}
Deque<TreeNode> stack = new LinkedList<TreeNode>();
TreeNode prev = null;
while (root != null || !stack.isEmpty()) {
while (root != null) {
stack.push(root);
root = root.left;
}
root = stack.pop();
if (root.right == null || root.right == prev) {
res.add(root.val);
prev = root;
root = null;
} else {
stack.push(root);
root = root.right;
}
}
return res;
}
}
运行结果
热门推荐
脑卒中康复分哪三期
大众探歌哪个颜色最受欢迎?白色成销量之冠
贾汪区:特色产业旺起来 集体农户“双增收”
如何降低国际贸易中OA订单风险
革命性材料推动光子集成电路技术进步
京东客服:正逐步开放支付宝使用
X射线衍射测试技术的优化与实验技巧分享
焊缝气孔的类型、形成因素、控制方法
美容院和医疗整形医院有哪些区别?如何选择适合自己的美容方式?
专业引领,CFA协会助力培养复合型金融人才
7种对比设计技巧,让作品更具视觉冲击力
提高汉语言文学专业的写作水平
斗罗大陆:除冰火两仪眼外的五大神秘宝地
戒断症状:从轻微不适到生命危险的六大阶段及应对方法
速看!央视315晚会曝光事件全汇总 原来这些全是坑?
2024年央视3·15晚会曝光事件舆情分析
道教神仙体系——玉皇大帝
红楼梦:宝玉梦游太虚幻境与秦可卿成亲的深层寓意
古代的钢材为什么珍贵?
春季油痘肌问题频现,海诗妍小课堂分享护肤攻略
“一房二卖”中两个合同效力的认定
清华和中科大为智能眼镜面部捕捉提出低功耗解决方案AUGlasses
《水浒传》的艺术成就探究
肩周炎黏连了怎么治疗
空气炸锅烤土豆,美味如此简单!
金价的波动对投资者有何影响?
便宜又好用的感冒药有哪些
从深度贫困到旅游胜地 悬崖村村民生活新变化
结构胶含甲醛高吗?如何减少结构胶中的甲醛危害
实现资产规模:AUM管理的战略与实践