树的高度,深度,层数,度的辨析与解释

一.高度和深度辨析

关于树的深度和高度的计算,我看到两个不同的说法,它们的区别就在于到底是从0开始计算还是从1开始计算。(网上的和算法题偏向说法二,如果有能找到更加权威的解答望不吝赐教)


说法一:
《数据结构与算法分析:C语言描述》 第2版中的第4.1节中:

这里写图片描述


说法二:
来自:树的高度和深度的区别

这里写图片描述

K节点在树的底层,是一个叶子节点,则一般定义为K的高度在最低为1,以此类推,O的高度也是为1,P的节点也是为1。M节点是叶子节点O的父节点,从下往上数,M节点高度为2。那么G节点的高度是多少呢?从G-L的高度为2,从G-M-O节点高度为3,到底G节点高度为多少呢,正确答案是3,请看定义:
1.高度的定义为:从结点x向下到某个叶结点最长简单路径中边的条数
注意:对于是否是边的条数这个不清楚,待我后来查证,这个主要是由于其初值是1还是0来确定的,一般都是以1开始

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

二.层数和度的解释

层数:根节点为第一层,往下一次递增。

树中节点的最大层数称之为树的深度或者高度,所以在基数为1时树的深度=树的高度=最大层数

但是节点的深度和高度并没有必然的关系

节点的度:节点拥有的子树的个数,度为0的节点称之为叶子节点

  • 树的度:是树内所有节点度的最大值
  • 树的深度:树内所有节点深度的最大值,也就是所有叶子节点深度的最大值,也就是树的层数
  • 树的高度:树内所有节点高度的最大值,也就是根节点的高度,也就是树的层数

你可能感兴趣的:(数据结构与算法)