一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
创作时间:
作者:
@小白创作中心
一起走进遍历二叉树的奇妙之旅:递归、迭代与统一迭代法全详解
引用
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数组,输出的结果顺序就是左右中了。
二叉树的统一迭代法
针对三种遍历方式,使用迭代法是可以写出统一风格的代码!我们的做法是,我们讲访问的节点直接加入栈中,但是如果是要处理的节点我们就在后面放入一个空指针。然后统一收割节点。
前序遍历
压栈顺序:右左中
中序遍历
压栈顺序:右中左
后序遍历
压栈顺序:中右左
热门推荐
嬰兒吃手:從2個月開始的正常行為,2歲前不用過度干預
男子感染甲流后剧烈咳嗽,引发视网膜裂孔
红藜麦的功效与作用、禁忌和食用方法
购房贷款的常见还款方式及其特点
蛀牙和龋齿有什么区别?从专业角度解析牙齿腐蚀问题
为什么跑步会调节情绪呢?
为什么跑步会调节情绪呢?
南方VS北方,小年习俗“连连看”!
什么是抗冲击材料?科普告诉你
中国计量大学“‘浙’乡和韵”调研团走进浙江湖州
研究生招生30年扩招30倍经历三方面变革
Excel制作次数分布表的三种方法
撰写优秀自我评价的技巧,助你求职成功的关键要素总结
喝红糖水什么时候最好减肥
300元和3000元的眼镜,到底有什么区别?
金渐层猫的饲养与护理要点解析
美国降息对全球经济的影响,每日财经最新消息解析
1976年出生的五行属性是什么?1976年五行查询
化工生产中溶剂回收利用
两地分居婚姻:挑战与机遇并存,专家建议助力关系维系
沙国王父子角色设定介绍
榆林府谷:以镁产业技术创新助推县域经济高质量发展
经期吃什么好
博美犬有哪些品种
定价6.6亿元,闻泰科技向立讯转让三家子公司100%股权
10款养生茶食谱:润喉止咳、调经补血、消脂瘦身,附在家冲泡简易步骤
如何给U盘设置密码,提高数据安全性
国家对艾滋病人的关怀政策解读
揭秘艾滋病档案:隐私保护与查询权限的深度探讨
如何设置群晖web端口映射