【问题标题】:Different interpretations of height of a binary tree二叉树高度的不同解释
【发布时间】:2014-08-12 14:40:31
【问题描述】:

我正在研究数据结构和算法,这件事让我很困惑

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

根据我正在关注“Lipschutz 的数据结构”的书,它说“树 T 的深度(或高度)是 T 的一个分支中的最大节点数。结果是 1 比T 的最大层数。图 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

说,“二叉树的高度 对于只有一个节点的树,根节点,高度定义为0,如果有2 节点的级别,高度为 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 呢?

请帮忙。

【问题讨论】:

  • 你知道,这可能只是因为“身高”没有得到严格定义(如果是在个人作者的作品或教师的课堂之外)。
  • 高度可以任意定义。您只需使用heightheight-1 调整算法
  • 但是既然我正在准备考试,我应该接受什么才是正确的解释,当我必须解决一个需要高度的问题时,对这样一个基本的事情产生怀疑真的很可怕。跨度>
  • 在美国,一楼就是欧洲的一楼。在法国,这将是 rez-de-chaussée :-)
  • 接受您的课程状态的解释

标签: algorithm data-structures binary-tree terminology


【解决方案1】:

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

height(left) - height(right)

因此,如果两者都比您最喜欢的高度定义大一或小一,则平衡因素不会改变,只要您相应地重新定义一棵空树的高度。 p>

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

您还可以通过观察另一个定义的基本情况为 -1 来得出零值,否则它总是给出比“分支中的最大节点数”定义小 1 的值。

【讨论】:

  • 因此,根据这个定义,我应该将零元素树的高度设为 0 而不是 -1,如果我使用其他定义,就会出现这种情况。非常感谢:-)
猜你喜欢
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多