对二叉树高度的不同解释



我正在学习数据结构和算法,这个东西真的让我很困惑

二叉树的高度,因为它也用于AVL搜索树。

根据我正在阅读的书《DATA STRUCTURES by Lipschutz》,它说"树T的深度(或高度)是T分支中最大的节点数,这比T的最大层数多1。图7.1中的树7的深度为5。"

图7.1:
             A 
            / 
           /              
          /     
         /       
        B         C
       /        / 
      D   E     G   H
         /         / 
        F         J   K
                 /
                L

但是,在其他几个资源中,虽然给出了相同的定义,但高度的计算方式不同。例如,当我从互联网上阅读http://www.cs.utexas.edu/users/djimenez/utsa/cs3343/lecture5.html

"这是一个示例二叉树:

                   1
                  / 
                 /   
                /     
               /       
              2         3
             /        / 
            /        /   
           /        /     
          6       7 4       5
         /      /         /
        9  10   11        8

树的高度是所有节点深度的最大值。所以上面的树的高度是3。"

另一个来源http://www.comp.dit.ie/rlawlor/Alg_DS/searching/3.%20%20Binary%20Search%20Tree%20-%20Height.pdf

表示"二叉树的高度"对于只有一个节点(根节点)的树,如果有2个节点,则高度定义为0节点的高度为1,以此类推。空树(除了空节点之外没有其他节点)被定义为高度为-1。"

现在这最后两个解释相互符合,但不符合书中给出的例子。

另一个来源说"有两种约定来定义二叉树的高度1)从根到最深节点的最长路径上的节点数。2)从根到最深节点的最长路径上的边数。

在本文中,遵循第一个约定。例如,下面的树的高度为3。

              1
             / 
            2   3
           / 
          4   5

"在这里,我想问的是,根和叶之间的节点数和边数如何保持一致?那么叶节点的高度是多少呢,书上说它应该是1(因为最大的层数是0,所以高度应该是0+1=1,但是通常说叶节点的高度是0。还有,为什么书中提到深度和高度是一样的?这件事真的真的让我很困惑,我试着从一些来源澄清,但似乎无法在两种解释之间做出选择。请帮助。

==>我想补充一点,因为现在我接受了这本书的惯例,在AVL搜索树的主题中,我们需要计算BALANCE FACTOR(即左右子树的高度差)。上面写着:

            C (-1)
           / 
      (0) A   G (1)
             /
            D (0)

括号内的数字为平衡因子。

现在,如果我要遵循D的书的高度为1,并且G的右子树的高度为(-1),因为它是空的,所以G的平衡因子应该= 1-(-1)=2!

为什么这里D的高度为0呢?

请帮。

如果你关心的是平衡因素,那么身高的确切定义并不重要。回想一下,平衡因子是

height(left) - height(right)

所以如果两者都比你喜欢的高度定义大一个或小一个,平衡因子不会改变,只要你相应地重新定义空树的高度。

现在的问题是,"分支中最大节点数"的定义既是递归的,但没有指定基本情况。但是,由于根据这个定义,单元素树的高度为1,显然,零元素树的高度选择为0,如果你算出公式,你会发现这是正确的。

您也可以通过观察其他定义的基本情况为-1来获得零值,否则它总是给出比"最大值"小1的值。

最新更新