树的高度和深度 | 结点的高度和深度
有个缺点,看到什么东西不管是不是重点只要说不通总是爱钻牛角尖。
对于 树的高度和深度(以及结点的高度和深度) 看了几本不同的书,都有各自的说法,多方查证吧,花了很多时间,最后归纳一下。(´。• ᵕ •。`) ♡
树的高度和深度
深度定义是从上往下的,高度定义是从下往上的。(其实不用在意这个,反正树的深度高度怎么数都一样的)。
深度和高度涉及到结点的层数,有的教材规定根结点在第0层,有的则规定根结点在第1层。原理都是一样的,因教材而异。
树从根结点开始往下数,叶子结点所在的最大层数称为 树的深度。
有的教材对于树的高度定义是高度就是深度(层数是0123,深度=高度=3;层数是1234,深度=高度=4);而有的教材树的高度则是看一共有几层。也就是说不论根节点在第几层,树的深度都是和最大层的叶子节点一样。而树的高度只要看有几层就行了(0123是四层,1234也是四层)。
总之在我看来:
有两种说法:
- 高度就是深度
- 看层数:
如果根结点第0,层数=深度=高度-1
如果根结点第1,层数=深度=高度
举个栗子_(:3 」∠ )_:
图 | 左 | 右 |
---|---|---|
层数 | 从第0层开始 | 从第1层开始 |
最大层数 | 4 | 5 |
深度 | 4 | 5 |
高度(高度=深度) | 4 | 5 |
高度(数层数) | 5 | 5 |
补充:
根节点在第0层时候,按照北大数据结构视频的说法就是高度数结点数,深度数路径。从A到G,节点是5层,中间有4段路径,所以深度4,高度5。
其实也可以理解为数高度时候叶子结点从1开始数。因此空数高度0,只有一个根节点高度1。
但是在清华大学 邓俊辉数据结构书中如下:
这本书中可以看出数高度时候叶子结点是从0开始的,因此空数高度-1,只有一个根节点高度0。
结点的高度和深度
结点的深度也是从根结点开始数,是第几层也决定于根结点在第0层还是第1层。根结点的高度则取决于它的子树,该节点子树中最远的那个叶子结点作为1开始数。
例如对于BCD三个点:
B的子树是C和D,数B的高度时候,B的子树中离B最远的叶子节点是G,所以G高度为1,B高度4,D高度3。但是C是叶子节点,C没有真子树,C高度就是1。
图 | 左 | 右 |
---|---|---|
BCD高度(叶子节点>=0) | 4 1 3 | 4 1 3 |
BCD高度(叶子节点>0) | 3 0 2 | 3 0 2 |
BCD深度 | 1 2 2 | 2 3 3 |
参考书籍和视频课:
- 《数据结构(C++版) 》 第二版 清华大学出版社 王红梅
- 《数据结构(C++语言版)》 第三版 清华大学出版社 邓俊辉
- 《数据结构(用面向对象方法与C++语言描述) 》 第二版 清华大学出版社 殷人昆
- 《数据结构高分笔记》2019版 机械工业出版社 天勤考研
- 北京大学 数据结构与算法
- 华南理工大学 数据结构与算法
(*´ω`)人(´ω`*)我是萝莉安,今天钻牛角尖也成功了呢
树的高度和深度 | 结点的高度和深度相关推荐
- 树:求二叉树的高度和叶子结点数量
算法代码很简单都是用使用递归计算,大家把递归思想领悟到就ok了. 二叉树高度算法 //求二叉树的高度 采用递归的方式 void GetHeight(BiTree tree, int* heightNu ...
- Unity Shader PostProcessing - 11 - Depth Fog/Height Fog - 雾效/深度雾效/高度雾/深度+高度雾
文章目录 观察生活中的雾 Scenario 1 - Pure Depth Fog - 纯深度雾 提取有用信息 Scenario 2 - Height Fog - 带高度的雾 提取有用信息 Scenar ...
- 树与树算法二叉树的层次遍历/广度遍历/深度遍历详解与代码实现
一. 树与树算法 1.1树的概念 树(tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合.它是由n(n>=1)个有限节点组成一个具有 ...
- 橱柜高度与身高对照表_橱柜高度与身高对照表 橱柜高度怎么根据身高定制?...
有人橱柜高度没选好,做饭的时候就腰酸背痛,你看看橱柜高度没选好的影响有多大,鉴于这一点,你的橱柜高度一定要好好设置.今天就来给大家讲讲橱柜高度与身高对照表和橱柜高度怎么根据身高定制? 橱柜高度与身高对 ...
- 有一个1亿结点的树,已知两个结点, 求它们的最低公共祖先!
对该问题,分为如下几种情形讨论: 情形一: 假如该树为二叉树,并且是二叉搜索树, 依据二叉搜索树是排过序的, 我们只需要从树的根结点开始,逐级往下,和两个输入的结点进行比较. 如果当前结点的值比两个结 ...
- [css] 父元素下有子元素,子元素也有高度但父元素的高度为何为0呢?分析下可能出现的原因及解决方法
[css] 父元素下有子元素,子元素也有高度但父元素的高度为何为0呢?分析下可能出现的原因及解决方法 父元素塌陷父元素在文档流中高度默认是被子元素撑开的,当子元素脱离文档流以后,将无法撑起父元素的高度 ...
- js获取window窗口高度(页面滚动条可滚动高度) - 代码篇
js中获取窗口高度的方法 取窗口滚动条滚动高度 (如下文 · 截图) 一. javascript 和 jquery代码: //原生 javascript 代码: let scrollHeight = ...
- php设置页面最小高度,HTML_CSS布局中最小高度的妙用,最小高度可以设定一个BOX的最 - phpStudy...
CSS布局中最小高度的妙用 最小高度可以设定一个BOX的最小高度,当其内容较少时时,也能保持BOX的高度为一定,超出就自动向下延伸,但到目前为止,只有Opera 和 Mozilla 支持,IE7开始也 ...
- jq获取页面高度_jquery获取文档高度和窗口高度汇总
jquery获取窗口高度和窗口高度,$(document).height().$(window).height() $(document).height():整个网页的文档高度 $(window).h ...
最新文章
- html %3c% page,page.html
- JavaScript编码风格指南
- codeblocks安装后提示找不到编译器,也找不到MinGW目录
- Understanding your audience
- VMware ubuntu 上网2
- 程序员如何达到年薪百万?python程序员必读书籍!
- 为什么说DeFi将催生银行业杀手级应用?
- 问题二十:C++全局debug “ray tracing图形”实例
- hypermesh 错误 2005
- android快牙原理,快牙的使用原理是什么_快牙怎么使用_3DM手游
- H265解码流程理解
- 人民币大写金额转换C#方法
- 客户数据分析方法——用户画像
- 2020年重磅喜讯!热烈祝贺王家林大咖大数据经典传奇著作《Spark大数据商业实战三部曲》 畅销书籍第二版 清华大学出版社发行上市! 前浪致 Spark + AI 后浪
- SUSE Linux Enterprise Server 12 SP3系统安装详解
- Zabbix-3.0.x使用OneAlert发送告警
- 众妙之门玄之又玄,游戏系统中的伪随机(Pseudo-Randomization)和真随机(True-Randomization)算法实现Python3
- 服务器温度显示过高,服务器机房温度过高
- SCDM 实例教程:基本几何建模
- otrs安装mysql_安装OTRS | 学步园