文章链接: 二叉树理论知识、 递归遍历、 迭代遍历、 统一迭代、 层序遍历
视频链接:递归遍历、迭代遍历1、迭代遍历2、层序遍历
题目链接: 144.前序遍历、 94.中序遍历、 145.后序遍历、 102.二叉树的层序遍历
二叉树基础知识
清晰版本地址: https://mubucm.com/doc/24WvH2u7pR
相关参考视频:( https://www.bilibili.com/video/BV1hw4m1q7DF?vd_source=65a224d3f97ae5a1002c0964faf8a876)
用递归遍历:
分析步骤:
- 确定递归函数的参数和返回值;
- 确定终止条件;
- 确定单层递归的逻辑;
前序遍历:
中序遍历:
后序遍历:
用迭代法遍历:
迭代法和递归的区别:
- 递归:就是在运行的过程中调用自己。
- 迭代法:也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
前序遍历(迭代法)
中序遍历(迭代法)
无法通过前序遍历直接得到。
后序遍历(迭代法)
与前序遍历相似,注意最后要将结果翻转。
统一迭代:
前面的迭代法中的前中后序遍历中的中序遍历与其他两个代码的书写有较大的区别,所以我们想:有没有一种办法能让三种遍历方式得到代码书写相似,即只改变遍历代码的顺序呢。接下来,就是要介绍”统一迭代法“。
前序遍历
中序遍历
后序遍历
层序遍历:
相当于图论中的"广度优先搜索"(BFS)。
用队列实现。
今日收获:
今日学习了二叉树的BFS和DFS。DFS包括前中后序遍历(递归法、迭代法、统一迭代法);BFS包括层序遍历。