二进制搜索树 - 排序

时间:2013-10-27 05:40:54

标签: sorting height binary-search-tree

如果搜索树的V值为V = {1,2,3,4,5,6,7} 从右向左插入

我们要命令它尽可能地获得最大和最短的高度 - 我们将如何做到这一点?它需要最好和最差(lg2(n + 1))的情况??

订单是否独一无二?

谢谢 - 我有点理解但不确定我应该采取什么步骤。

2 个答案:

答案 0 :(得分:0)

通过插入排序序列中的值来创建最高的树

1 2 3 4 5 6 7

7 6 5 4 3 2 1

最短树是通过递归算法对值进行排序,找到中位数然后递归处理左右子树:

4 2 1 3 6 5 7

这会产生一个对数高度的树:

     4
   /   \
  2      6
 / \    / \
1   3  5   7

这里的中位数是4,所以先行。

4

现在你有一个左(1,2,3)和右(5,6,7)的分区。要订购左边,从中间值开始,2。现在你的子树有1和3。这些是1个元素集,因此这是你的基本情况。

4 2 1 3

现在处理你的右子树(5,6,7),从6开始。

4 2 1 3 6 5 7

答案 1 :(得分:0)

最大的高度很容易;按顺序排列:

1
 \
  2
   \
    ...

使用最小的高度,对它们进行排序,将中间作为根,并将两侧放在一个分支中。冲洗并重复。

        3
       / \
      2   5
     /   / \
    1   4   6
             \
              7

所以... n代表第一个,而log_2(n)代表第二个(向上舍入)。