我正在阅读二进制搜索树,我有一个问题要回答类似于Ordered Binary Tree of Strings
在平衡之前和之后,我在下面绘制的树木是否正确?输入的数据是按照水星,金星,地球,火星,木星,土星,天王星的顺序排列的
平衡之前:
Mercury
/ \
Earth Venus
\ /
Mars Saturn
/ \
Jupiter Uranus
平衡后:
Mercury
/ \
Jupiter Uranus
/ \ / \
Earth Mars Saturn Venus
第一棵树的深度是3,第二棵树的深度是2,最大尺寸是7(基于n = 2^(d+1)-1
,其中d
=深度,这也是正确的吗?
答案 0 :(得分:2)
是的,平衡看起来正确,因为二进制搜索树排序是正确的(对于任何给定节点,左子树中的所有节点都较小,右子树中的所有节点都较大)并且它完全平衡。
虽然我不确定是否存在通用的“平衡树”算法(至少没有我听说过的算法)。然而,有self-balancing BST's像红黑树和AVL树。
是的,深度是正确的,根据Wikipedia:
树的深度(或高度)是树中从根到最深节点的路径长度。只有一个节点(根)的(根)树的深度为零。
是的,最大尺寸计算也是正确的。您可以将其想象如下:
最大大小为1 + 2 + 4 + 8 + ... + 2depth
(每个术语对应于每个级别的最大节点数)
这是二进制的1111111...111
(depth
1)
当然,上面加一个是100000...000
(depth
0),即2depth + 1
。
再次减去一个,我们得到2(depth + 1) - 1
。