树的高度和深度的区别

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

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的深度为2。

3.总结

 

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

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

### 结构中的高度深度概念 在形数据结构中,高度深度是两个重要的属性,用于描述节点的位置及其层次关系。 #### 高度 结点的高度是从该节点向下分支的叶节点开始自底向上逐层累加得到的结果。例如,在一棵中如果存在一个节点K位于的最底部作为叶子节点,则其高度通常被定义为1,而其他较高位置上的节点如G可能具有更大的高度值,比如3[^2]。 #### 深度 相比之下,结点的深度则是指从根节点出发向下的路径长度,即从顶部到底部计算经过了多少级。因此,当提到某个特定节点(像例子中的B)处于第二层时,意味着它距离根正好两步之遥,故此它的深度等于2。 #### 关系 值得注意的是,虽然单个节点的高度深度可以不同——这取决于各自子的发展情况以及所在的具体位置——但对于整个而言,这两个量确实存在着一定的关联: - **相等条件**:对于整棵完整的来说,最深的那个叶结点所处的那一层决定了整体的最大深度;同样地,由根至这些末端元素构成了一条最长链路,从而也代表了全最高的部分。换句话说,最深层级上的任意一片叶都对应着最大高度,使得两者数值一致[^1]。 然而需要注意的是,这种一致性仅适用于全局范围内的比较,并不意味着局部范围内任一对应节点间的高度深度必然相同。实际上,即使在同一水平线上也可能出现差异化的测量结果,具体表现为某些兄弟姐妹级别的内部成员可能会拥有不同的后代分布模式,进而影响到各自的垂直跨度指标。 ```python class TreeNode: def __init__(self, value=None): self.value = value self.children = [] def calculate_depth(node, current_level=0): if not node: return 0 max_child_depth = 0 for child in node.children: max_child_depth = max(max_child_depth, calculate_depth(child, current_level + 1)) return max(current_level, max_child_depth) def calculate_height(node): if not node or not node.children: return 1 heights_of_children = [] for child in node.children: heights_of_children.append(calculate_height(child)) return 1 + (max(heights_of_children) if heights_of_children else 0) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值