我不知道如何确定一棵树是否平衡、完全平衡,或者如果我将它作为图片而不是代码来确定它是否平衡
例如,如果我有这棵树
如何检查它是平衡、完美平衡还是不平衡?
有人能给我一个完美平衡树的例子吗?
[o]
/ \
[b] [p]
\ / \
[d] [m] [r]
显然,如果是这样的话,我可以判断树是不平衡的:
[b]
\
[d]
\
[r]
\
[c]
但是,如果它与上面的非常相似,我不知道如何得到它
这是一棵完美平衡的平衡树:
[k]
/ \
[A] [p]
/ \
[N] [R]
有人可以向我解释一下吗?
一棵完美平衡的树应该是这样的:
[ R ]
/ \
[a] [b]
/ \ / \
[c] [d] [e] [f]
Balanced:可以说它是平衡的,因为每个节点的左右子树的高度相差 1 或更小(在本例中为 0),
Perfect:你可以说它是完美的,因为节点数等于 2^(n+1)-1,其中 n 是树的高度,在本例中为 (2^3) - 1 = 7
在您的示例中,第一棵树是平衡的,但并不完美,第二棵树既不平衡也不完美。第三个是平衡的,因为每个节点的左子树和右子树的深度相差 1 或更小,但它并不完美,因为根据完美树方程,节点数应该是 7,而节点数却是 5。
EDIT:
关于您最后的评论,您在考试中得到的事实并不意味着答案在任何意义上都是正确的。完美树的概念与完整性的概念有关,完整的树有时被称为“完美”树,它意味着除了叶子之外的每个节点的子节点数量是 2 我给你的是一个计算方程。第三棵树是平衡的,因为重要的是每个节点的左子树和右子树的深度,而不是左子树和右子树中子树的数量。在这种情况下,从节点 A 开始,左子树的深度为 0,右子树的深度为 0 -> 0 - 0 = 0,从 P 开始,两个深度均为 1 -> 1 - 1 = 0,从根开始,从左子树是 1,右子树是 2 -> 2 - 1 = 1
希望能帮助到你!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)