二进制搜索字符串树(平衡前)

时间:2013-12-12 21:40:31

标签: algorithm data-structures binary-search-tree

我正在阅读二进制搜索树,我有一个问题要回答类似于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 =深度,这也是正确的吗?

1 个答案:

答案 0 :(得分:2)

是的,平衡看起来正确,因为二进制搜索树排序是正确的(对于任何给定节点,左子树中的所有节点都较小,右子树中的所有节点都较大)并且它完全平衡。

虽然我不确定是否存在通用的“平衡树”算法(至少没有我听说过的算法)。然而,有self-balancing BST's像红黑树和AVL树。

是的,深度是正确的,根据Wikipedia

  

树的深度(或高度)是树中从根到最深节点的路径长度。只有一个节点(根)的(根)树的深度为零。

是的,最大尺寸计算也是正确的。您可以将其想象如下:
最大大小为1 + 2 + 4 + 8 + ... + 2depth(每个术语对应于每个级别的最大节点数) 这是二进制的1111111...111depth 1) 当然,上面加一个是100000...000depth 0),即2depth + 1。 再次减去一个,我们得到2(depth + 1) - 1