数据结构--二叉树遍历(详细过程)

这篇具有很好参考价值的文章主要介绍了数据结构--二叉树遍历(详细过程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、什么是二叉树?

二、二叉树的遍历

1. 先序遍历

2. 中序遍历

 3.后序遍历

4. 遍历的推导

三、重要的事情

一、什么是二叉树?

1. 二叉树:一种树形结构,特点是每个结点至多只有两颗子树,并且子树有左右之分,次序不能颠倒。

特殊形态的二叉树:满二叉树和完全二叉树;

2. 满二叉树:最后一层都是叶子结点,每个结点都是满的(每结点都有两颗子树)。

3. 完全二叉树:有n个结点,且符合满二叉树的编号次序。

二、二叉树的遍历

  • 先序遍历 DLR (依次遍历:结点,子树,子树)
  • 中序遍历 LDR (依次遍历:子树,结点,子树)
  • 后序遍历 LRD (依次遍历:子树,子树,结点)

看不懂?不急,直接上图。(二叉树就像递归一样,一层一层的。)

1. 先序遍历

二叉树遍历,二叉树遍历,学习分享,数据结构

从根结点开始围着跑,依次写出即可(这是简单的方法,也是最快的,但还是要看一下下面的详细解释哦)

图中序列为:A B D H E C F I G

详细解释(我称它为"三分法"):先序遍历是先根,再左,后右,像递归一样一层一层拨开,(此处的根结点是每一个结点皆可是根,而不是最顶上的根结点),如下图;分好根左右后,按我们上面的定义(依次遍历:结点,子树,子树)

根是A(写下来),再拨左子树,此时左子树可分成图二;根是B(写下来),再拨左子树,又拨成图三的样子;根是D(写下来),拨不下去了,回到根是D的情况,在图三中,H成为了左子树(写下来),发现没有右子树,那就不写了;回到根是B的情况,在图二中,根结点和左子树已经被我们写好了,到右子树了,右子树是E(写下来);如此如此,这般这般,再按此方法把图一中的右子树划分成图四,图五的样子,剩下的交给你了。写出来为:A B D H E C F I G

二叉树遍历,二叉树遍历,学习分享,数据结构

2. 中序遍历

二叉树遍历,二叉树遍历,学习分享,数据结构

 图中序列为:H D B E A I F C G

404???!!!

 嘻嘻,这次没有快捷办法了!但按我上图的"三分法"敲好用。(熟练后心中直接出图,不用像我一样框出来)

解释:不要忘了定义:中序遍历 LDR (依次遍历:子树--->结点--->子树)

图一中根是A,但我们要先写左子树,开始拨图二,发现还有,继续拨它;图三中,左子树是H(写下来),根是D(写下来),右子树,没有就不写;回到图二,根是B(写下来)因为左子树已经被我们写好了,右子树是E(写下来);回到图一,根是A(写下来),开始写右子树,然后就是图四,图五了;交给你了,别忘了定义!定义!定义!写出来为:H D B E A I F C G

 3.后序遍历

二叉树遍历,二叉树遍历,学习分享,数据结构

 图中序列为:H D E B I F G C A

目前还是没有发现又快又保证能对的方法,但"三分法"依旧很强,熟练后就又快又准了。

解释:后序遍历 LRD (依次遍历:子树,子树,结点)

先左子树,我们一眼拨到图三,左子树H(写下来),没有右子树,那就到根D(写下来)了;图二中,右子树是E(写下来),根是B(写下来);拨到图五,左子树是I(写下来),F(写下来)是根;图四,右子树是G(写下来),根是C(写下来),最后A是图一的根;写出来为:H D E B I F G C A

二叉树遍历,二叉树遍历,学习分享,数据结构

4. 遍历的推导

如下面的题。PS:如果只给 前序遍历序列后序遍历序列 是不能确定唯一二叉树的(判断题)。

二叉树遍历,二叉树遍历,学习分享,数据结构

 简单的方法:后序遍历最后一个序列结点一定是最顶上的根结点,先序遍历第一个序列结点一定是根结点。所以此题只能含泪选D再拿3分了。

开玩笑,要是换个干扰项怎么办呢?还是要有真功夫的!

解释:后序可判断C为根结点,这样从(1)可推出左子树,大家可还记得上面图四和图二的后序遍历吗?看看他们各自的根结点与总结点A有上面关系?你试着画一个没有右子树的,看看它的后序遍历是什么。这样由后序(2)可推E为根,由中序可推左右子树,(5)再推根,又可中序推出左右子树,这样图5.2就画出来了。中序判左右,后序判根结点。再看下一题巩固下。

二叉树遍历,二叉树遍历,学习分享,数据结构

别急着看结果,自己画一下

二叉树遍历,二叉树遍历,学习分享,数据结构

  二叉树遍历,二叉树遍历,学习分享,数据结构

此题为:D 

详细解释:由先序遍历推出根结点为A,由(1)可推左子树为DGB,右子树为ECHF;由(2)可确定左子树的根为B;根为B,由(3)可推知DG为左子树,再由(4)知D为根,由(5)可推G为右子树;这样就可以画出左边的图了(例图三)。ECHF交给你们了,请用好我的“三分法”哦!结果为(例图四);由先序推根,中序推左右子树。

二叉树遍历,二叉树遍历,学习分享,数据结构

                                                                        自己画一下

二叉树遍历,二叉树遍历,学习分享,数据结构

二叉树遍历,二叉树遍历,学习分享,数据结构

三、重要的事情 

根左右,左根右,左右根 三者相互限制可判断出相应位置。

感觉不错的话,就请点赞支持一下吧!纯手工打造哦!谢谢!!!文章来源地址https://www.toymoban.com/news/detail-854971.html

到了这里,关于数据结构--二叉树遍历(详细过程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】二叉树<遍历>

    在学习二叉树遍历之前我们先了解下二叉树的概念。 二叉树是: 1.空树 2.非空:根节点,根节点的左子树,根节点的右子树构造。 学习二叉树结构,最简单的方式就是遍历了。 二叉树的遍历就是按照某种特定的规则,依次对二叉树中的结点进行相应的操作,并且每个节点只

    2023年04月11日
    浏览(47)
  • 【数据结构】二叉树(遍历,递归)

     🌈个人主页: 秦jh__https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 🔥 系列专栏: 《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482 ​​​ 目录 二叉树遍历规则 前序遍历 ​ 中序遍历  后序遍历 递归结构遍历 前序 中序  求节点个数 求叶子节点个数  求树

    2024年01月19日
    浏览(31)
  • 【数据结构】二叉树的遍历

      Yan-英杰的主页 悟已往之不谏 知来者之可追    C++程序员,2024届电子信息研究生 目录 前序、中序以及后序遍历 前序遍历 中序遍历 后序遍历                  学习二叉树结构,最简单的方式就是遍历。所谓 二叉树遍历 (Traversal) 是按照某种特定的规则,依次对二叉

    2023年04月23日
    浏览(32)
  • 数据结构 | 二叉树的各种遍历

    我们本章来实现二叉树的这些功能 Tree.h 我们先来几个简单的 直接手动个创建即可,很简单~~ 这里也是很简单,也可以看做下图这样遍历,或者画一下递归展开图 我们这里看一下递归展开图 为空就返回0 不是空,是叶子,返回1 不是空,也不是叶子,就递归左子树和右子树

    2024年02月04日
    浏览(29)
  • 数据结构——二叉树层序遍历

    来喽来喽~ 二叉树的层序遍历来喽~ 层序遍历那是相当有趣滴! 我的朋友,请不要迷惘,你要记住,你终有鲲鹏一日! 加油吧!从现在开始~ 层序遍历 :除了先序遍历、中序遍历、后序遍历外,还可以对二叉树进行层序遍历。设二叉树的根节点所在层数为1,层序遍历就是从所

    2024年02月07日
    浏览(37)
  • 数据结构之进阶二叉树(二叉搜索树和AVL树、红黑树的实现)超详细解析,附实操图和搜索二叉树的实现过程图

    绪论​ “生命有如铁砧,愈被敲打,愈能发出火花。——伽利略”;本章主要是数据结构 二叉树的进阶知识,若之前没学过二叉树建议看看这篇文章一篇掌握二叉树,本章的知识从浅到深的 对搜索二叉树的使用进行了介绍和对其底层逻辑的实现进行了讲解 ,希望能对你有所

    2024年02月04日
    浏览(36)
  • go数据结构(二叉树的遍历)

      用数组来存储二叉树如何遍历的呢? 如果父节点的数组下表是i,那么它的左孩子就是i * 2 + 1,右孩子就是 i * 2 + 2。  二叉树的遍历方式: 二叉树有 三种基本遍历方式 ,分别是 前序遍历、中序遍历和后序遍历 。遍历的原理是从根节点开始,按照特定方式递归遍历左子树

    2023年04月15日
    浏览(28)
  • 数据结构与算法-二叉树的遍历

    🌞 “少年没有乌托邦,心向远方自明朗!” 二叉树的遍历是按照一定次序访问二叉树中的所有结点,且每个结点仅被访问一次的过程。遍历线性结构是容易解决的,而二叉树的结构是非线性结构,需要寻找规律,使二叉树的结点排列在一个线性队列上,便于遍历。 由二叉树

    2024年02月08日
    浏览(31)
  • Java数据结构——二叉树的遍历

     作者:敲代码の流川枫 博客主页:流川枫的博客 专栏:和我一起学java 语录:Stay hungry stay foolish 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器——牛客网 点击注册和我一起刷题 文章目录 1.创建二叉树 2.二叉树的三种遍历方式 3.代码实现遍历 前序遍历

    2024年01月22日
    浏览(34)
  • 【数据结构】二叉树的层序遍历

    当我们面对一个树结构时,常常需要对其进行遍历以获取其中的节点信息。其中一种常用的遍历方式是层序遍历,也称为广度优先搜索(BFS)。本篇博客将详细介绍层序遍历的原理和实现方法。 层序遍历以树的根节点开始,按照从上到下、从左到右的顺序逐层遍历树中的节点

    2024年02月03日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包