树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」1、树的定义树是n个结点的有限集合,有且仅有一个根结点,其余结点可分为m个根结点的子树。2、树的概念结点的度:一个结点拥有子树的个数称为度。比如A的度为3,C的度为2,H的度为0。度为0的结点称为叶子节点(D,F,G,H)。树的度是树中所有结点的度的最大值,此树的度为3。 树中结点的最大层次成为树的深度或高度。此树的深度为4。 父节点A的子结点B,C,D;B,C,D也是兄弟节点…

大家好,又见面了,我是你们的朋友全栈君。

1、树的定义

树是n个结点的有限集合,有且仅有一个根结点,其余结点可分为m个根结点的子树。

树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

2、树的概念

  1. 结点的度:一个结点拥有子树的个数称为度。比如A的度为3,C的度为2,H的度为0。度为0的结点称为叶子节点(D,F,G,H)树的度是树中所有结点的度的最大值,此树的度为3。
  2. 树中结点的最大层次成为树的深度或高度。此树的深度为4。
  3. 父节点A的子结点B,C,D;B,C,D也是兄弟节点
  4. 树的集合称为森林.树和森林之间有着密切的关系.删除一个树的根结点,其所有原来的子树都是树,构成森林.用一个结点连接到森林的所有树的根结点就构成树.

 

3、二叉树 

        二叉树是每个节点最多拥有两个子节点,左子树和右子树是有顺序的不能任意颠倒。

树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

 

4、二叉树遍历

前序遍历(前根遍历):——>左——>右

中序遍历(中根遍历):左——>——>右

后序遍历(后根遍历):左——>右——>

已知前序和中序,求后序问题,  前序 ABDGCEFH    中序 DGBAECHF

解法:根据前序、中序综合判断画出树的节点图,然后再写后序遍历:DGBEHFCA

(前序和中序的子树也满足前序或中序的规则)

树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

二叉树的深度优先遍历(DFS)与广度优先遍历(BFS)

      DFS深度优先遍历:从根节点出发,沿着左子树方向进行纵向遍历,直到找到叶子节点为止。然后回溯到前一个节点,进行右子树节点的遍历,直到遍历完所有可达节点为止。利用数据结构“栈”,父节点入栈,父节点出栈,先右子节点入栈,后左子节点入栈。递归遍历全部节点。

DFS:ABDGCEFH

 

     BFS广度优先遍历:从根节点出发,在横向遍历二叉树层段节点的基础上纵向遍历二叉树的层次。利用数据结构“队列”,父节点入队,父节点出队列,先左子节点入队,后右子节点入队。递归遍历全部节点。

BFS:ABCDGEFH

 

5、满二叉树 

高度为h,由2^h-1个节点构成的二叉树称为满二叉树。

树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

 

6、完全二叉树 

完全二叉树是由满二叉树而引出来的,若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数(即1~h-1层为一个满二叉树),第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。

堆一般都是用完全二叉树来实现的。

树、二叉树(完全二叉树、满二叉树)概念图解「建议收藏」

 

未完。。

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

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

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


相关推荐

  • goland 2021.9 激活码【最新永久激活】

    (goland 2021.9 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月26日
    87
  • DHCP协议原理及其实现流程

    DHCP协议原理及其实现流程DHCP(Dynamic Host Configuration Protocol):动态主机配置协议在常见的小型网络中(例如家庭网络和学生宿舍网),网络管理员都是采用手工分配IP地址的方法,而到了中、大型网络,这种方法就不太适用了。在中、大型网络,特别是大型网络中,往往有超过100台的客户机,手动分配IP地址的方法就不太合适了。因此,我们必须引入一种高效的IP地址分配方法,幸好,DHCP(Dy

    2022年5月23日
    32
  • vscode配置JAVA环境_捷达VS5进取版有哪些配置

    vscode配置JAVA环境_捷达VS5进取版有哪些配置VSCode配置JAVA开发环境1:给机器安装JDK、MAVEN下载JDK下载路径:https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html配置JAVA的环境变量我的JDK在硬盘的位置:新建环境变量JAVA_HOME:D:\Applications\JAVAjdk…

    2022年10月3日
    2
  • callee caller作用_call up和call的区别

    callee caller作用_call up和call的区别caller和callee的区别

    2025年6月30日
    7
  • vscode一键配置C/C++多个C及CPP文件编译与tasks.json和launch.json原理

    vscode一键配置C/C++多个C及CPP文件编译与tasks.json和launch.json原理vscode配置环境及配置原理搜了很多的教程,发现要么教程太老,给的配置信息里面有些参数都不能使用了,要么就是直接扔下自己的配置信息就没了,不知道咋来的,也不能拿过来直接用,让我这种小白无从下手,于是就摸索整理一下,帮助一下像我这样小白刚入手的小伙伴们。原理我觉得最重要的就是我们要明白各个配置文件是干嘛的,它是怎么被vscode使用的,明白这一点,那么自己就可以比较清晰参数该怎么改,应该改哪些参数,而不是拿着别人的配置文件,无从下手。配置文件基本的原理(只是原理,不是咋配置的):vscode使用的最

    2025年8月11日
    3
  • 树莓派配置记录——aria2

    aria2是linux下的一个下载利器,支持http/BT/磁力连。本身是命令行程序,支持rpc连接,因此可以编程控制,github上有很多优秀的webUI,非常适合树莓派。aria2本身的配置选项很多,完整的列表在这里下面是我的配置,放在~/.aria2/aria2.config文件中#默认下载路径dir=/home/pi/Downloads#下载前预创建文件,ext4可…

    2022年4月7日
    122

发表回复

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

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