一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
创作时间:
作者:
@小白创作中心
一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
引用
CSDN
1.
https://blog.csdn.net/2301_79896470/article/details/146053622
生活的底片从来不是遥远的白日梦,而是热爱生活的自己
二叉树的遍历是指按照某种顺序访问树中的所有节点。常见的遍历方式分为两大类:深度优先遍历(DFS) 和 广度优先遍历(BFS)。以下是详细的遍历方式及其实现方法:
深度优先遍历(DFS)
深度优先遍历是从根节点出发,沿着一条路径尽可能深地访问节点,直到到达叶子节点,然后回溯到上一个节点继续遍历。DFS 有三种常见方式:
前序遍历(Preorder Traversal)
- 顺序:根节点 → 左子树 → 右子树
- 应用场景:复制树、表达式树的前缀表示。
中序遍历(Inorder Traversal)
- 顺序:左子树 → 根节点 → 右子树
- 应用场景:二叉搜索树的中序遍历结果是有序的。
后序遍历(Postorder Traversal)
- 顺序:左子树 → 右子树 → 根节点
- 应用场景:删除树、表达式树的后缀表示。
广度优先遍历(BFS)
广度优先遍历是按层次从上到下、从左到右访问节点。通常使用队列实现。
层序遍历(Level Order Traversal)
- 顺序:从上到下、从左到右逐层访问节点。
- 应用场景:求树的深度、按层打印节点。
遍历方式对比
遍历方式 | 顺序 | 应用场景 | 实现方式 |
|---|---|---|---|
前序遍历 | 根 → 左 → 右 | 复制树、前缀表达式 | 递归、栈 |
中序遍历 | 左 → 根 → 右 | 二叉搜索树的有序输出 | 递归、栈 |
后序遍历 | 左 → 右 → 根 | 删除树、后缀表达式 | 递归、栈 |
层序遍历 | 从上到下、从左到右 | 求树的深度、按层打印节点 | 队列 |
二叉树的递归遍历
在递归遍历中,各个遍历的规律是:
- 前序遍历:中左右
- 中序遍历:左中右
- 后序遍历:左右中
二叉树的迭代遍历
迭代法就是借用栈的思想来实现二叉树的遍历,但是不同的遍历有不一样。
前序遍历
因为我们要满足出栈是是中左右的顺序,根据栈先进后出的特性,我们入栈的顺序应该是右左。
中序遍历
中序遍历是左中右,先访问的是二叉树顶部的节点,然后一层一层向下访问,直到到达树左面的最底部,再开始处理节点。
后序遍历
后序遍历是左右中,我们只需要调整一下先序遍历的代码顺序,就变成中右左的遍历顺序,然后在反转result数组,输出的结果顺序就是左右中了。
二叉树的统一迭代法
针对三种遍历方式,使用迭代法是可以写出统一风格的代码!我们的做法是,我们讲访问的节点直接加入栈中,但是如果是要处理的节点我们就在后面放入一个空指针。然后统一收割节点。
前序遍历
压栈顺序:右左中
中序遍历
压栈顺序:右中左
后序遍历
压栈顺序:中右左
热门推荐
昆山杜克大学2025年综合评价报考指南
经颅多普勒检测:无创脑血管检查的详细指南
经颅多普勒检测:无创脑血管检查的利器
轻松制作U盘启动盘的详细步骤与注意事项指南
书法知识大全
如何导出微信的备份照片
四大创新柔性机翼技术:让飞行更轻、更顺、更智能
血管通路应在何时建立?如何评估?术后可能出现的症状和并发症有哪些?
1955年首次授衔:802名开国少将职务履历简介,附照片
抑郁症导致记忆力减退能恢复吗
肌酐是什么指标?如何通过肌酐检测判断肾功能?
《英雄联盟》终于抄《王者荣耀》的作业
影响光学仪器旋光仪的多个关键因素
如何优化CMOS逻辑IC的性能
“小康”一词最早出现于《诗经》,体现了古人对安居乐业的美好愿景
英超热刺vs伯恩茅斯预测分析 热刺近期状态表现低迷
英超热刺vs伯恩茅斯预测分析 热刺近期状态表现低迷
守护口腔健康,从预防蛀牙开始!
复方感冒药里到底有哪些“方”?用药安全提示来了→
入手钛金属运动表的5个理由
三台古今州府县名琐谈
413米街道见证绵阳发展史 21县市政令曾经从这里发出
把天捅破的四川——“华西天漏”,四川盆地边缘降雨为什么巨多?
2025养老金调整日程明确!三步到位、涨幅可期,这些新变化要知道
先天政变的背景:权力的争夺与历史的转折
传统制香业探索“生活美学”新定义
枫桥夜泊所见的有哪些?揭秘枫桥夜泊:诗人眼中所见的那些景与情!
枫桥夜泊的写作背景 枫桥夜泊作者是谁
Nature推荐:快速完成一篇论文,你只需要这 12 个技巧!
翻拍不是原罪