如果搜索树的V值为V = {1,2,3,4,5,6,7} 从右向左插入
我们要命令它尽可能地获得最大和最短的高度 - 我们将如何做到这一点?它需要最好和最差(lg2(n + 1))的情况??
订单是否独一无二?
谢谢 - 我有点理解但不确定我应该采取什么步骤。
答案 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)代表第二个(向上舍入)。