一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
创作时间:
作者:
@小白创作中心
一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
引用
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数组,输出的结果顺序就是左右中了。
二叉树的统一迭代法
针对三种遍历方式,使用迭代法是可以写出统一风格的代码!我们的做法是,我们讲访问的节点直接加入栈中,但是如果是要处理的节点我们就在后面放入一个空指针。然后统一收割节点。
前序遍历
压栈顺序:右左中
中序遍历
压栈顺序:右中左
后序遍历
压栈顺序:中右左
热门推荐
揭秘继电器的工作原理:低功率信号如何控制高功率电路
上海城投水务周骅:排水事业必将拥有生生不竭的动力
曹操与刘备:权谋与仁义的较量
深入解析GPU:图形处理器的技术与应用
现代职场的隐形挑战!情绪劳动正在消耗你的精力?
专家:得了白内障不能拖,夏天也可做老花白内障手术
依据社保缺口测算未来财政支出力度
北京十大姓氏,快来看看你知道的有哪些?
四君子汤:中医调理脾胃的秘方
美国60年代的反战和民权运动:社会运动和政治变革带来的影响
Excel折线图制作教程:从插入到多系列合并
“二十四史”是什么?包括哪些史书?一篇文章快速了解
电动车控制器的工作原理与故障排除指南
来最北方的镇山感受慢生活
美国签证面试申请全流程详解
日柱丁卯命格:究竟蕴含何种贵气
健康讲座|藏在呼噜里的健康危机
什么是ISO14001环境管理体系认证,看这篇文章就够了
宝藏之城阜新:世界玛瑙之都的文化盛宴
南京红山森林动物园游玩攻略 一日游攻略
长沙市周南中学校长陈新春:沐光而行 循心而育
南京信息工程大学怎么样 好不好
幻影之城:揭秘海市蜃楼的神秘与科学
正常人吃玉屏风散,真的有必要吗?
深圳IT圈新八小时工作制引发热议:分段工作制是否可行?
视频播放技术解析:提升观看体验的关键因素与解决方案
NBA西部决赛独行侠vs森林狼G4述评:唐斯下半场爆发,森林狼客场5分险胜
真的开始涨工资了!
芯片制造的成本与定价:从设计到市场的全方位解析
狗狗吐黄水是怎么回事?!铲屎官一定要注意!