【发布时间】: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 呢?
请帮忙。
【问题讨论】:
-
你知道,这可能只是因为“身高”没有得到严格定义(如果是在个人作者的作品或教师的课堂之外)。
-
高度可以任意定义。您只需使用
height或height-1调整算法 -
但是既然我正在准备考试,我应该接受什么才是正确的解释,当我必须解决一个需要高度的问题时,对这样一个基本的事情产生怀疑真的很可怕。跨度>
-
在美国,一楼就是欧洲的一楼。在法国,这将是 rez-de-chaussée :-)
-
接受您的课程状态的解释
标签: algorithm data-structures binary-tree terminology