一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
创作时间:
作者:
@小白创作中心
一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
引用
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数组,输出的结果顺序就是左右中了。
二叉树的统一迭代法
针对三种遍历方式,使用迭代法是可以写出统一风格的代码!我们的做法是,我们讲访问的节点直接加入栈中,但是如果是要处理的节点我们就在后面放入一个空指针。然后统一收割节点。
前序遍历
压栈顺序:右左中
中序遍历
压栈顺序:右中左
后序遍历
压栈顺序:中右左
热门推荐
考研数学做完题该如何总结
电饼铛陶瓷与不粘涂层哪个更好?居家装修选购指南
云南普洱象群闯入民宅!野生大象为何会闯入家中?该如何应对?
新手健身,从这7个黄金动作入手,3个月抵别人半年效果
近视激光手术能在术前检查当天做吗?
手机护眼模式真的可以保护眼睛吗?武汉普瑞眼科医院为你解答
陈皮与什么茶一起泡最好?陈皮泡茶搭配技巧,可以尝试品饮
“20年百万火星移民”背后的豪赌:第一批火星移民者开始攒钱了
Spark-Core中RDD的缓存(cache和checkpoint)机制详解
人际交往避雷!看穿虚伪之人的7个信号
欧冠:拜仁慕尼黑VS凯尔特人比赛分析
双语教育的崛起:国际化学校打造全球人才
高效利用业余时间的12条心得
出租车该不该向乘客收过路费?郑州明确了→
午餐吃得饱就够了吗?避开3大误区(附4个午餐搭配)
骨扫描后注意事项和禁忌有哪些
LPL是什么意思?LPL:中国英雄联盟职业联赛的崛起与影响
什么是二级局
2025辽宁省公务员考试时间一览,小白必看!
美国国土面积多大?详解美国的地理规模及其影响
关键遗传机制为面部发育和先天问题提供见解
Mac上的复制粘贴技巧(提高效率)
大型会议会场布置的关键要点
我国快递驿站行业需求规模持续上升 但生存空间被挤压 未来出路在何方?
工作辞职的步骤是什么
《魔兽世界:至暗之夜》即将推出家宅系统,18个种族住房风格大揭秘!
雨水 | 春耕春种时,如何以绿助美?
房产证加名不再难!一文通,轻松搞定产权问题!
杭温高铁试运行 两个多小时南京可达温州
工单系统操作全解析:提升效率与客户满意度