代码训练营|●day 14 任务以及具体安排:第六章 二叉树part01

本文探讨了二叉树的前序、中序和后序遍历,包括递归实现的思路、时间复杂度分析以及迭代方法(如Morris遍历和迭代法),强调了静态图片在理解上的帮助。
摘要由CSDN通过智能技术生成

144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历

递归实现

实现没有难度。官方题解中提到了一个morris遍历方法。之后再研究

递归的时间复杂度

再次复习思路。

  1. 确定递归时需要的参数。确定需要的返回值。确定终止条件
  2. 确定单层的逻辑
迭代实现

迭代法墨迹半天也搞不明白。
别人写的更明白一点,就是将根节点入栈,然后将其出栈,记录数据,然后将他的左右节点入栈,然后注意下入右这样,先弹的是左。
然后重复的就是弹出一个,就把他的左右节点入栈。
文档里只要多一句这样的描述。就可以让我更理解。属于是对不上电波.

完成前序

中序的过程是先遍历到最左端,那么在最左端这个小树里,左节点是空,不用记录数据,所以先记录栈顶的数据,然后转到右节点。在右子树里找到最左节点。栈顶存的是当前子树的根节点。

完成中序

后序1:先访问到最左节点,该节点的子树中,左孩子是空。所以尝试访问右子树。如果为空那么输出当前节点。这是该子树的根节点。并且用一个pre指针记录该节点。读取栈顶元素返回上一层树。
如果该层有右子树,那么将该根节点放回栈中,对于右子树重复之前的过程。先搜索最左的节点,检查该节点是否有右子树,或者该右节点是否被访问过。
还得是gpt
后序2:再来看后序遍历,先序遍历是中左右,后续遍历是左右中,那么我们只需要调整一下先序遍历的代码顺序,就变成中右左的遍历顺序,然后在反转result数组,输出的结果顺序就是左右中了
完成后序

统一的迭代法

使用了nullptr分割了树的每一层。迭代法学会后,实现不难。

最后,morris算法没有看。

这篇文章的静态图片比官方的动态要好理解

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值