彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题

彻底弄懂二叉树的先序,中序,后序三种遍历与做题方式_二叉树的先序,中序,后序遍历例题二叉树二叉树遍历二叉树题目计算机二级先序中序后序根

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

最近有同学考计算机二级不懂树遍历的计算,就找上我解惑。作为老好人的博主的我,但是义不容辞的上来阐述了一番。

先来官方的概念:

树的遍历:是指对树中所有结点信息的访问,即依次对树中每个结点的访问一次且仅访问一次。
分为:先序遍历,后序遍历,层次遍历。(普通的树是没有中序遍历的)

这里我们说一下二叉树的遍历:

二叉树的遍历分成三种,按照根节点的访问先后分为:
先序遍历(先根遍历):先访问根节点,然后访问左子树, 最后访问右子树。
中序遍历(中根遍历):先访问左子树,然后访问根节点, 最后访问右子树。
后序遍历(后根遍历):先访问左子树,然后访问右子树, 最后访问根节点

如:
在这里插入图片描述

先序遍历的顺序:ABC (先根节点A,在左子树B,然后右子树C);
中序遍历的顺序:BAC (先左子树B,在根节点A,然后右子树C);
后序遍历的顺序:BCA (先左子树B,在右子树C,然后根节点A)。

在这里插入图片描述
上图二叉树遍历结果:

先序遍历:ABDFCEGHI
中序遍历:BFDACHGIE
后序遍历:FDBHIGECA

第一种分析方法:(此处分析先序遍历)

①:从A根节点开始,根据先序遍历的原则:首先访问根节点A,然后访问它的左子树B, 在访问右子树C,遍历顺序就是A->B->C
②:左子树B 也按照先序遍历的原则来处理, 遍历顺序就是B->D。B的右子树也按照先序遍历的原则,顺序是D->F
,就可以得到A->B->D->F->C
③:右子树C按照先序遍历的原则处理,顺序是C->E,同理C的子树得遍历顺序E->G->H->I
那么, 这棵树先序遍历的结果就是,A->B->D->F->C->E->G->H->I

这是递归思路,根据原则遍历子树,子树没了子节点遍历完,则遍历同深度。

第二种分析方法:(此处分析中序遍历)

在这里插入图片描述

推导计算,两种遍历序列算出第三种序列。
在这里插入图片描述
记住两点:
先序/后序遍历可以确定根节点。
中序遍历可以确定左子树和右子树。
做这种题就是,反复来回这两点

题目分析:

由前序遍历知道,A是根节点。
则根据中序遍历 知道HBDF是左子树 EKCG是右子树的
然后在根据前序遍历 BHFD 知道B是左子树的根节点 ,再根据中序遍历知道H是左子树,DF是右子树,同理F是根,D是左子树。
由此也可推出A的右子树的结构
所有整个树的结构是:
在这里插入图片描述
因此后序遍历是:
HDFBKGCEA
答案是B

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194034.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法

    面试又挂了:大厂面试到底更看重学历还是技术?来看看大佬的说法前言我是一个普通本科出身的Android程序员,我的学校也不过就是一个普通二本。嗯,我的学弟学妹们也是一样的,都是普通二本。但是和我不同的是,现在的社会越来越浮躁了,浮躁的让人沉不下心认真做事,让人忍不住去想各种有的没的。比如我的这些学弟学妹们。我已经不止一次收到来自他们的私信了,他们问的内容,无一不是表达对自己学历的自卑和对即将离开学校的自己的不自信,还有对面试被拒的伤心。千篇一律的问题,基本内容如下:面试挂了,大厂面试到底更看重学历还是技术?我这样的学历在求职中有什么需要注意点的点吗?

    2022年6月6日
    56
  • E: Could not get lock /var/lib/dpkg/lock-frontend – open (11: Resource temporarly unavailable)

    E: Could not get lock /var/lib/dpkg/lock-frontend – open (11: Resource temporarly unavailable)Ubuntu安装软件报错问题错误信息E:Couldnotgetlock/var/lib/dpkg/lock-frontend-open(11:Resourcetemporarlyunavailable)解决办法:sudorm/var/lib/dpkg/lock-frontendsudorm/var/lib/dpkg/lock

    2025年8月8日
    7
  • SQL级联删除_级联删除用例

    SQL级联删除_级联删除用例SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表(转载)createtablea(idvarchar(20)primarykey,passwordvarchar(20)notnull)createtableb(idintidentity(1,1)primarykey,namevarchar(50)notnull,userIdvarchar(20),foreignkey(userId)referencesa(id)

    2022年9月27日
    4
  • leetcode -1864. 构成交替字符串需要的最小交换次数[通俗易懂]

    leetcode -1864. 构成交替字符串需要的最小交换次数[通俗易懂]给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 。请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1 。交替字符串 是指:相邻字符之间不存在相等情况的字符串。例如,字符串 “010” 和 “1010” 属于交替字符串,但 “0100” 不是。任意两个字符都可以进行交换,不必相邻 。示例 1:输入:s = “111000”输出:1解释:交换位置 1 和 4:”111000″ -> “101010” ,字符串变为交替字符串。示例 2:输入:s =

    2022年8月11日
    9
  • 深度学习检测小目标常用方法

    深度学习检测小目标常用方法

    2020年11月14日
    185
  • pychram2021.11.3激活【2021免费激活】

    (pychram2021.11.3激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9ZHR…

    2022年3月28日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号