Tree 平衡树的定义
我只是想知道是否有人能为我澄清平衡树的定义。我有这样一句话:“一棵树是平衡的,如果每棵树都是平衡的,而这两棵树的高度相差最多一个Tree 平衡树的定义,tree,Tree,我只是想知道是否有人能为我澄清平衡树的定义。我有这样一句话:“一棵树是平衡的,如果每棵树都是平衡的,而这两棵树的高度相差最多一个 如果这是一个愚蠢的问题,我很抱歉,但是这个定义是否适用于从树的叶子一直到树的每个节点,还是只适用于树的左、右两个子树?我想另一种方法是,树的内部节点是否可能不平衡,而整棵树是否保持平衡这两件事没有区别,想想看 让我们用一个更简单的定义,“一个正数是偶数,如果它是零,或者这个数减去2是偶数。”这是说8是偶数,如果6是偶数?还是说8是偶数,如果6,4,2和0是偶数 没有区
如果这是一个愚蠢的问题,我很抱歉,但是这个定义是否适用于从树的叶子一直到树的每个节点,还是只适用于树的左、右两个子树?我想另一种方法是,树的内部节点是否可能不平衡,而整棵树是否保持平衡这两件事没有区别,想想看 让我们用一个更简单的定义,“一个正数是偶数,如果它是零,或者这个数减去2是偶数。”这是说8是偶数,如果6是偶数?还是说8是偶数,如果6,4,2和0是偶数 没有区别。如果它说8是即使6是偶数,它也说6是即使4是偶数。因此它也说4是即使2是偶数。因此它说2是即使0是偶数。所以如果它说8是即使6是偶数,它(间接)说8是即使6、4、2和0是偶数
这里也是一样。任何间接子树都可以通过一系列直接子树找到。因此,即使它只直接应用于直接子树,它仍然间接应用于所有子树(以及所有节点)。约束通常递归应用于每一子树。也就是说,只有在以下情况下,树才是平衡的:
A
/ \
B C
/ / \
D E F
/
G
下一个是不平衡的,因为C的子树高度相差2:
A
/ \
B C <-- difference = 2
/ /
D E
/
G
A
/ \
有几种方法可以定义“平衡”。主要目标是保持所有节点的深度O(log(n))
在我看来,您所说的平衡条件是针对AVL tree
以下是AVL树平衡条件的形式定义:
对于AVL中的任何节点,其左子树的高度与其右子树的高度最多相差
下一个问题,什么是“高度”
二叉树中节点的“高度”是从该节点到叶子的最长路径的长度
有一种奇怪但常见的情况:
人们将空树的高度定义为(-1)
例如,root的左子级是null
:
A (Height = 2)
/ \
(height =-1) B (Height = 1) <-- Unbalanced because 1-(-1)=2 >1
\
C (Height = 0)
不,不是平衡树示例:
A (h=3)
/ \
B(h=1) C (h=2)
/ / \
D (h=0) E(h=0) F (h=1)
/
G (h=0)
A (h=3)
/ \
B(h=0) C (h=2) <-- Unbalanced: 2-0 =2 > 1
/ \
E(h=1) F (h=0)
/ \
H (h=0) G (h=0)
A(h=3)
/ \
B(h=0)C(h=2)1
/ \
E(h=1)F(h=0)
/ \
H(H=0)G(H=0)
平衡树是一种高度为对数(树中元素数)的树
给出的定义“一棵树是平衡的,每个子树是平衡的,两个子树的高度最多相差一个”,后面是AVL树
由于AVL树是平衡的,但并非所有的平衡树都是AVL树,因此平衡树不符合此定义,其中的内部节点可能不平衡。但是,AVL树要求所有内部节点都要平衡。平衡树的目标是以最小的遍历次数(最小高度)到达叶片。
树的阶数是分支数减去1。
平衡树可能不是二进制的
树中节点的高度是从该节点向下到叶子的最长路径的长度,计算路径的起点和终点
如果子树的高度相差不超过1,则树中的节点是高度平衡的
如果树的所有节点都是高度平衡的,则树是高度平衡的
假设根的值是15。在右边,我有16,17,18。在左边,我有14,13,12。这是一棵平衡树吗?每个子树离节点的高度都在一以内。但是,在根下面的第一个节点到右边,它没有左子节点,但它的右子节点的高度是2。所以这个节点是不平衡的。对吗?正确。因此树是不平衡的。因此,为了使树平衡,每个节点都必须平衡。美丽-非常感谢您的帮助。@DavidSchwartz我们为什么要使用平衡树?为什么我们关心树是否平衡?这是迄今为止我所看到的最复杂的答案-对任何问题。很抱歉这么说。Just想补充一点,我们讨论的是子树的Comp.Science定义:树t的子树是一棵树,由t中的一个节点和t中的所有子树组成。对于常规数学定义(树本身就是树的子图),它不是真的。请注意,此定义允许平衡树的不平衡子树。(例如,通过将一个子树添加到D,将另一个子树添加到G来扩展上面的平衡树示例)这是有意的吗?不,不是。”对于AVL中的任何节点,其左子树的高度与其右子树的高度最多相差1。“如果你在D中添加一个子元素,那么B将不遵循上述规则。因此,树不会是BBT。你的答案非常冗长,不准确,可以说更简单。一棵没有叶子比其他叶子离根远得多的树。
类似于“远得多”的语句”是不明确的。在code.Bruh中实现需要精确的定义。与最接近的叶节点一样靠近根节点,或者只比最远的一个节点。
更简单。上面给出的是官方定义。可以使用递归轻松实现。
height = O(log(n))
O, as in asymptotic notation i.e. height should have same or lower asymptotic
growth rate than log(n)
n: number of elements in the tree