树,二叉树(完全二叉树,满二叉树)概念图解

 更新时间:2021年07月02日 09:19:38   作者:摸金青年v  
今天小编就为大家分享一篇关于二叉树的图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧,希望能对你有所帮助

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 层所有的结点都连续集中在最左边,这就是完全二叉树。

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

总结

本篇文章就到这里了,希望可以给你带来一些帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • springBoot使用JdbcTemplate代码实例

    springBoot使用JdbcTemplate代码实例

    这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Java Char的简单工具类CharUtil分享

    Java Char的简单工具类CharUtil分享

    下面小编就为大家分享一篇Java Char的简单工具类CharUtil,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • Spring注解 TX声明式事务实现过程解析

    Spring注解 TX声明式事务实现过程解析

    这篇文章主要介绍了Spring注解 - TX 声明式事务实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • JDBC Template基本使用方法详解

    JDBC Template基本使用方法详解

    这篇文章主要介绍了JDBC Template基本使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 利用Java+Selenium+OpenCV模拟实现网页滑动验证

    利用Java+Selenium+OpenCV模拟实现网页滑动验证

    目前很多网页都有滑动验证,目的就是防止不良爬虫扒他们网站的数据。本文将介绍通过Java Selenium OpenCV解决网页滑块验证,需要的可以参考一下
    2022-01-01
  • Spring Cloud Alibaba教程之Sentinel的使用

    Spring Cloud Alibaba教程之Sentinel的使用

    这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Java Spring详解如何配置数据源注解开发以及整合Junit

    Java Spring详解如何配置数据源注解开发以及整合Junit

    Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力,本篇文章带你了解如何配置数据源、注解开发以及整合Junit
    2021-10-10
  • Java @Pointcut注解表达式案例详解

    Java @Pointcut注解表达式案例详解

    这篇文章主要介绍了Java @Pointcut注解表达式案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • SpringBoot实现HTTP服务监听的代码示例

    SpringBoot实现HTTP服务监听的代码示例

    前后端分离项目中,在调用接口调试时候,我们可以通过cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试,本次教程我们以Java服务端接口为例,需要的朋友可以参考下
    2023-05-05
  • Java中的3种输入方式实现解析

    Java中的3种输入方式实现解析

    这篇文章主要介绍了Java中的3种输入方式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论