Algorithm 二叉树高度的不同解释
我正在研究数据结构和算法,这件事让我很困惑 二叉树的高度,因为它也用于AVL搜索树 根据Lipschutz的《我在关注数据结构》一书,它说树的深度或高度T是T分支中的最大节点数。这比T的最大层数多1个。图7.1中的树7具有深度5 图7.1:Algorithm 二叉树高度的不同解释,algorithm,data-structures,binary-tree,terminology,Algorithm,Data Structures,Binary Tree,Terminology,我正在研究数据结构和算法,这件事让我很困惑 二叉树的高度,因为它也用于AVL搜索树 根据Lipschutz的《我在关注数据结构》一书,它说树的深度或高度T是T分支中的最大节点数。这比T的最大层数多1个。图7.1中的树7具有深度5 图7.1: A / \ / \ / \ / \ B C / \
A
/ \
/ \
/ \
/ \
B C
/ \ / \
D E G H
/ / \
F J K
/
L
但是,在其他几种资源上,高度的计算方式有所不同,尽管给出了相同的定义。例如,当我在网上阅读时
下面是一个二叉树示例:
1
/ \
/ \
/ \
/ \
2 3
/ \ / \
/ \ / \
/ \ / \
6 7 4 5
/ \ / /
9 10 11 8
树的高度是所有节点深度的最大值。所以上面的树的高度是3
另一来源
表示二叉树的高度
对于只有一个节点(根节点)的树,如果有2个节点,则高度定义为0
高度为1的节点级别,依此类推。空树除空节点外没有其他节点
定义为具有–1的高度
现在,最后两种解释相互符合,但与书中给出的示例不符
另一个消息来源说,有两种约定来定义二叉树的高度
1从根节点到最深节点的最长路径上的节点数。
2从根节点到最深节点的最长路径上的边数
在这篇文章中,遵循了第一个约定。例如,下面这棵树的高度是3
1
/ \
2 3
/ \
4 5
在这里,我想问的是,根和叶之间的节点和边的数量是如何相同的?
根据这本书,叶节点的高度应该是1,因为最大层的数量是0,所以高度应该是0+1=1,
但通常说叶节高度为0。
为什么书中提到深度和高度是一样的?
这件事真的让我很困惑,我试着从许多资料中澄清,但似乎无法在这两种解释之间做出选择。
请帮忙
==>我想补充一下,因为现在我接受了这本书的惯例,
在AVL搜索树的主题中,我们需要计算平衡因子,即左子树和右子树的高度差
它说:
C (-1)
/ \
(0) A G (1)
/
D (0)
括号中的数字是平衡系数
现在,如果我按照书中D的高度是1,而G的右子树的高度是-1,因为它是空的,所以G的平衡因子应该是=1--1=2
为什么这里D的高度是0
请帮忙。如果你关心的是平衡系数,那么身高的准确定义并不重要。回想一下,平衡系数是
height(left) - height(right)
因此,如果两者都比您最喜欢的高度定义大一个或小一个,只要您相应地重新定义空树的高度,平衡因子就不会改变
现在的问题是,分支定义中的最大节点数是递归的,但没有指定基本情况。但是,根据这个定义,由于单元素树的高度是一,所以对于零元素树的高度来说,最明显的选择是零,如果你计算出这些公式,你会发现这是可行的
通过观察另一个定义的基本情况是-1,也可以得出零值,否则它的值总是小于分支定义中的最大节点数。你知道,这可能只是因为在单个作者的作品或讲师的课堂之外没有严格定义高度,如果是这样的话,高度可以任意定义。你只需要根据身高或身高1调整算法,但既然我正在准备考试,我认为什么是正确的解释,当我必须解决一个需要身高的问题时,对这样一个基本问题产生怀疑真的很可怕。在美国,一楼是欧洲的一楼。在法国,这将是rez de Chausseée:-接受你的课程陈述的解释。根据这个定义,我应该将零元素树的高度取为0,而不是-1,如果我使用另一个定义,则会是这样。非常感谢:-