数据结构-二叉树的遍历

前言

数据结构分享:二叉树的遍历

一、遍历是什么?

树的遍历是访问树的每个结点,且每个结点仅被访问一次

二、分类

1.中序遍历

概念:它是先访问左子树,再访问该结点,再对右子树进行访问。

图解(示例):

该二叉树的中序遍历为:DBEACF                                          

解释:从A开始,一直寻找左子树,最后一个为“D”,所以中序遍历第一个为“D”,访问完左子树,下一步是访问该根结点,D的根结点为“B”,所以中序遍历第二个为“B”,然后下一步为访问右子树,B的右子树为“E”,中序遍历第三个为“E”。对于A来说,左子树已经访问完,所以访问根节点A本身,中序遍历第四个为“A”,下一步应该访问A的右子树“C”,则中序遍历第五个为“C”,最后一个则是“F”,为中序遍历第六个“E”。

总结:从定义出发,一步一步来。

2.先序遍历

概念:它是先访问根结点,再访问该结点左子树,再对右子树进行访问。

继续用上例:该二叉树的先序遍历为:ABDECF

解释:许多地方与中序遍历大同小异,这里便简单介绍一下。首先,访问根结点“A”,访问其左子树B,(注意:对于中序遍历而言,一定要访问完所有左子树才停止访问,但是先序遍历是对于一个一个的根结点而言的,所以只要访问该结点的左子树。),对于B,先访问左子树D,再是右子树E,此时,A的左子树已经访问完毕,对其右子树C,然后就是C的右子树F。


3.后序遍历

概念:它是先访问该结点左子树,再对右子树进行访问,再访问根结点。

后序遍历为:DEBFCA

解释:对于后序遍历我们也可以从定义下手,先访问所有左子树,可以来到D,对于D,根结点为B,所以我们下一步是访问B的右子树E,然后就是访问根结点B,前三个为DBE。对于A,左子树已经访问完了,所以应该访问右子树C,但是对于C,C还有一个左子树F,所以先访问F,再访问F的根结点C,最后,A的左右子树都访问完毕,访问A根结点。

三.小总结

      对于二叉树的遍历,其实就是一个递归的过程(还有非递归的遍历,但是使用较少),我们可以理解为其实就是对于根结点访问顺序的先后,先序遍历是首先访问根结点,中序遍历是中间,后序是最后。还是需要大家多多练习!融会贯通嘛。

四.练习实例

已知一个二叉树的中序遍历为:DBEACF ,后序为DEBFCA,画出该二叉树并写出先序遍历。

解:1、先从后序遍历下手,后序遍历最后一个就是根结点。则A为第一个根结点。

       2、看中序遍历看(由定义,中序是先访问左子树,再访问根结点,再右子树。)所以对于根结点A,"DBE"为其左子树,“CF”为右子树。

       3、再看A的前面是C,因为CF是A的右子树,又C在F后面,所以C为F的根结点(后序:先访问子树再根结点),所以C是F的根结点。

       4、对于DBE,从后序看,B是最后一个,并且看中序遍历,B位于D、E之间,所以,B为D、E根结点并且D是左子树,E是右子树。一个完整的二叉树就成为了!、

先序遍历请看上文(哈哈哈哈)。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Caisking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值