树的高度和深度,节点的高度和深度

本篇文章中根节点在第1层

一. 树的高度和深度,节点的高度和深度的定义:

  1. 树的高度(Height of a Tree):

    树的高度是从根节点到叶子节点的最长路径上的边数。树的高度是树中所有节点的高度中的最大值

  2. 树的深度(Depth of a Tree):

    树的深度与树的高度通常是同一个概念,即树的高度

  3. 节点的高度(Height of a Node):

    一个节点的高度是从该节点到其最深叶子节点的最长路径上的边数。叶子节点的高度是 0

  4. 节点的深度(Depth of a Node):

    一个节点的深度是从根节点到该节点的路径上的边数。根节点的深度是 0

二. 树的高度和深度,节点的高度和深度的区别:

假设我们有如下的二叉树:

                          层数
        A   ------------>  1   
       / \                                            
      B   C ------------>  2                             
     / \                                          
    D   E   ------------>  3 
       /	
      F     ------------>  4
  • 1. 树高(Tree Height)和 树的深度(Depth of a Tree)

    树高是从根节点 A 到最深的叶子节点的最长路径的长度。路径的长度是指经过的边数。

    • 从根节点 A 到叶子节点 F 的路径是:A -> B -> E -> F。这条路径有 3 条边。

    • 因此,树高和树的深度都是3

  • 2. 节点的高度(Height of a Node)

    节点的高度是指从该节点到其最深的叶子节点的最长路径的长度。我们计算各节点的高度:

    • 节点 F 是叶子节点,它的高度是 0(因为没有子节点)。
    • 节点 E 的高度是从 EF 的路径长度,即 1。
    • 节点 D 是叶子节点,它的高度是 0(没有子节点)。
    • 节点 B 的高度是从 B 到其最深的叶子节点(即 F)的路径长度,即 B -> E -> F,总共 2 条边。
    • 节点 C 是叶子节点,它的高度是 0(没有子节点)。
    • 节点 A 的高度是从 A 到其最深的叶子节点(即 F)的路径长度,即 A -> B -> E -> F,总共 3 条边。

    所以:

    • 节点 A 的高度是 3

    • 节点 B 的高度是 2

    • 节点 E 的高度是 1

    • 节点 c ,D, F 的高度是 0。(因为它们都是叶子节点)

  • 3. 节点的深度(Depth of a Node)

    节点的深度是指从根节点 A 到该节点的路径长度,即经过的边数。

    • 节点 A 是根节点,它的深度是 0

    • 节点 B 的深度是 1(从 AB)。

    • 节点 C 的深度是 1(从 AC)。

    • 节点 D 的深度是 2(从 ABD)。

    • 节点 E 的深度是 2(从 ABE)。

    • 节点 F 的深度是 3(从 ABEF)。

  • 4.总结
    • 树高是从根节点到最深的叶子节点的最长路径的长度。在这个例子中是 3。

    • 节点的高度是从该节点到其最深的叶子节点的最长路径的长度。例如,节点 A 的高度是 3,节点 B 的高度是 2。

    • 节点的深度是从根节点到该节点的路径长度。例如,节点 A 的深度是 0,节点 B 的深度是 1。

### 结构中的高度深度定义 #### 节点深度 节点深度是从根节点到该特定节点路径上的边的数量。按照某些定义,根节点位于第0层,在这种情况下,任何给定节点ni的深度等于它所在的层数[^2]。 对于的整体而言,其深度是指从根节点到达最远叶节点所需经过的最大节点数目(含始末两节点)。例如,如果存在一个节点k处于第五层,则表示它的深度为5,这表明从根出发至k需通过五个节点[^1]。 #### 节点高度 关于单个节点高度,这是指从当前节点向下延伸直到叶子结点最长简单下降路径上除自身外还有的其他节点数量;而整棵高度则是所有这些可能路径中最长者所包含的节点总数减一得到的结果。换句话说,一棵高度就是其中任一子里具有最高位置的那个末端节点距最近祖先的距离加1后的最大值。 因此,当提到整个数据结构时,“深度”通常用来描述自顶向下的测量方式——即由根部朝下看有多少层;相反地,“高度”的概念更多用于表达自底向上观察所得出的数据特征——也就是站在底部往上看能见到多高的一棵完整的分支体系。 ```python class TreeNode: def __init__(self, value=0, children=None): self.value = value self.children = children if children is not None else [] def calculate_depth(node, current_level=0): """递归函数来计算指定节点深度""" if node is None: return -1 # 如果传入的是None则返回-1作为错误标志 return current_level + (max((calculate_depth(child, current_level + 1) for child in node.children), default=-1)+1) def get_tree_height(root): """获取二叉或其他类型的形结构的高度""" if root is None or not root.children: return 0 heights_of_children = [get_tree_height(child) for child in root.children] return max(heights_of_children) + 1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值