树的高度和深度的区别

树的高度和深度的区别对于树的基本概念上理解 对于才接触数据结构的人来说 树的高度和深度是一个容易混淆的知识点 现解释如下 1 高度对于高度的理解 我们不管他数据结构什么什么知识 就拿楼房来说 假如一个人提问 楼房的高度有好高 我们会下意识的从底层开始往上数 假如楼有 6 层 则我们会说 这个楼有 6 层楼那么高 则提问者就会大概知道楼有多高了 所以高度就是以从下往上对比 这是我们的习惯 而在树中 树的高度也是从下往上

对于树的基本概念上理解,对于才接触数据结构的人来说,树的高度和深度是一个容易混淆的知识点,现解释如下:

1.高度

对于高度的理解,我们不管他数据结构什么什么知识,就拿楼房来说,假如一个人提问:楼房的高度有好高?我们会下意识的从底层开始往上数,假如楼有6层,则我们会说,这个楼有6层楼那么高,则提问者就会大概知道楼有多高了。所以高度就是以从下往上对比,这是我们的习惯。而在树中,树的高度也是从下往上数,如图所示

树的高度和深度的区别

K节点在树的底层,是一个叶子节点,则一般定义为K的高度在最低为1,以此类推,O的高度也是为1,P的节点也是为1。M节点是叶子节点O的父节点,从下往上数,M节点高度为2。那么G节点的高度是多少呢?从G-L的高度为2,从G-M-O节点高度为3,到底G节点高度为多少呢,正确答案是3,请看定义:

高度的定义为:从结点x向下到某个叶结点最长简单路径边的条数

注意:对于是否是边的条数这个不清楚,待我后来查证,这个主要是由于其初值是1还是0来确定的,一般都是以1开始

2.深度

理解了高度,则深度的理解就很容易了,深度是从根节点往下,列如上图中:B的深度为1。

3.总结

 

对于整棵树来说,最深的叶结点的深度就是树的深度;树根的高度就是树的高度。这样树的高度和深度是相等的。

 对于树中相同深度的每个结点来说,它们的高度不一定相同,这取决于每个结点下面的叶结点的深度。

树的深度 = 层数(从上至下)

树的高度 = 层数 + 1(从下至上)

 

 

 

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

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

(0)
上一篇 2026年3月19日 上午10:42
下一篇 2026年3月19日 上午10:42


相关推荐

  • datax(16):源码解读AbstractReporter

    datax(16):源码解读AbstractReporter之前介绍了通信类communication,容器类container,communication的收集类collector,今天再看一个报告类Reporter;一、概述AbstractReporter主要作用:Reporter的主要功能是将收集到的信息上报给上级主要方法:reportTGCommunication(汇报TG的communication信息给上级),reportJobCommunication(汇报job的communication信息给上级)二、族谱族谱里面目前只有父子.

    2022年5月16日
    46
  • pycharm安装pygame库遇到问题怎么办?

    pycharm安装pygame库遇到问题怎么办?新手在 pycharm 安装其他第三方库时非常顺利 安装 pygame 库却遇到问题 安装失败时软件提示原因可能大都与 version 有关 可以试一下下面这个简单有效方法 希望有帮助

    2026年3月19日
    2
  • 我手写了个SLAM算法!「建议收藏」

    我手写了个SLAM算法!「建议收藏」我手写了个SLAM算法!点击蓝色按钮,设置星标,第一时间获得文章推送哦1、前言前一段时间看过我文章的都知道,我打算写一个SLAM源码阅读的文章,然后,我就去读了Gmapping的源码,感受良多,不足的地方就是源码太乱了,阅读起来真的不香。于是就有了这篇文章,在我仔细阅读之后,我在源码的结构基础之上,进行大刀阔斧的删减和更改之后得到一个易于阅读的建图算法功能包,极大的降低了代码量,极大的提升了阅读体验。在这里将该算法功能包分享给大家,希望需要的朋友,善待它。之前文章链接:ps:为什么是gmappin

    2022年6月29日
    51
  • python 中 打印输出 换行

    中间添加print(”)即可#对字典遍历a=[‘banana’,’apple’,’mango’]forbina:print(b)print(”)#range函数循环次数默认在0开始foriinrange(5):

    2022年4月9日
    39
  • django修改数据_django-vue-admin

    django修改数据_django-vue-admin前言在ORM框架中,所有模型相关的操作,比如添加/删除等。其实都是映射到数据库中一条数据的操作。因此模型操作也就是数据库表中数据的操作。添加一个模型到数据库中:添加模型到数据库中。首先需要创建一

    2022年7月28日
    4
  • 最全JVM面试题

    最全JVM面试题文章目录 1 说一下 JVM 的主要组成部分及组成部分的作用 2 说一下 JVM 的作用 3 深拷贝和浅拷贝 4 说一下堆栈的区别 5 队列和栈是什么 有什么区别 1 说一下 JVM 的主要组成部分及组成部分的作用 方法区和堆是所有线程共享的内存区域 而 java 栈 本地方法栈和程序员计数器是运行是线程私有的内存区域 运行时数据区域就是我们常说的 JVM 的内存 类加载子系统 根据给定的全限定名类名 如 java lang Object 来装载 class 文件到运行时数据区中的方法区中 Java 堆

    2026年3月26日
    2

发表回复

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

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