只有一个节点的树的高度

时间:2010-10-31 22:19:01

标签: tree height binary-tree discrete-mathematics

根据维基百科,

  

树的高度是从根到的路径的长度   树中最深的节点。一个(根)树只有一个节点(   root)的高度为零(或一)。

我不明白 - 它是零还是一个(或两者)?

6 个答案:

答案 0 :(得分:32)

这只是你对二叉树高度的递归描述所做的一次。您可以考虑仅由0高度或1高度的节点组成的树。

如果你真的想以某种方式思考它,你可以这么认为

  • 如果您将高度视为边数,则为0(因此单个节点没有任何边,因此为0)
  • 如果您将高度视为节点数(即单个节点计为1),则为1

这只是描述最小树的高度,然后在任何情况下,无论何时添加降序节点,您都会添加相关边缘,因此它会相应增加。

在维基百科提供的示例中:

alt text

此树可以具有高度4(节点)或3(边缘)。这取决于你是通过边缘还是节点来计算它。

答案 1 :(得分:11)

使用节点计数而不是边缘计数的一个优点是它将空情况(零节点和节点级别)与最小情况(一个节点和一个节点级别)区分开来。在某些情况下,空树不会有意义,但在其他情况下,空的尝试将是完全合法的。

答案 2 :(得分:6)

取决于约定。这里没有“正确”的答案。我被教导它是1.但是零也是正确的。

答案 3 :(得分:3)

我认为,一个根节点的高度应为0。 它具有实际意义,因为2 ^ height也为您提供该级别的节点数。

答案 4 :(得分:1)

假设您正在以递归方式在节点类中计算高度,我将这样做以返回高度而不包含根的高度(java代码):

int height(){
    int leftHeight = 0;
    int rightHeight = 0;
    if(left != null)
        leftHeight =+ left.height() + 1;
    if(right != null)
        rightHeight =+ right.height() + 1;
    return Math.max(leftHeight, rightHeight);
}

如果要包括根的高度,则可以这样做:

int height(){
    int leftHeight = 0;
    int rightHeight = 0;
    if(left != null)
        leftHeight =+ left.height();
    if(right != null)
        rightHeight =+ right.height();
    return Math.max(leftHeight, rightHeight) + 1;
}

答案 5 :(得分:0)

取决于您想要如何解释树的高度。在某些应用程序中,具有一个节点的树被解释为具有一个高度,而其他树将其视为具有零高度。