二叉树的非递归遍历

二叉树的非递归遍历

回顾一下浙大的数据结构课程,看PPT过程中发现有的地方理解的不到位,去B站搜了这视频便于理解,讲的非常好,细节到位。本博客贴出了一些关键点便于大家参考,具体实例步骤可以去视频看,更加详细便于个人理解。

视频链接 : 二叉树的非递归遍历

1. 先序遍历
在这里插入图片描述

两步走:
1. 沿着根节点一直访问节点(打印)(实际上对应的是中间节点),并不断将节点压栈,此步骤一直执行到左子树为空
2. 出栈一个节点(中间节点),转向此节点的右子树

循环第一步和第二步

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2. 中序遍历

与先序遍历简直如出一辙,就是需要先打印节点
在这里插入图片描述

三步走

1. 从根节点开始不断沿着左子树节点下沉,过程中将节点(对应中间节点)不断入栈,此过程一直持续到左子树为空
2. 出栈一个节点(中间节点),进行访问(打印)
3. 转向此中间节点的右子树

循环上面的过程

在这里插入图片描述
在这里插入图片描述
3.后序遍历

后续遍历比前两个麻烦,需要两次入栈,两次出栈。(1)中的不出栈改为出栈,应该是PPT写错了。
在这里插入图片描述
分四步

1. 首先从根节点不断指向其左子树,并且入栈(便于后面出栈寻找右子树),此过程执行到左子树为空。
2. 出栈一个节点(中间节点),指向这个节点的右子树,并且将这个中间节点入栈。
3. 接下去应该是循环上面两个步骤,也即把当前中间节点的右子树节点当作根节点进行1和2,最终达到的效果是右子树被访问完成。
4. 出栈一个节点并进行访问,这个节点对应那个中间节点。

tip:用了一个flag标志位用于判断出栈的时候是访问左子树完成,还是右子树访问完成。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值