2013-06-19 93 views

回答

8

一个二叉搜索树需要的形状取决于两件事情:

  1. 其中元素插入的顺序,并
  2. 什么平衡操作,如果有的话,树插入操作中一样。

如果你有一个没有任何重新平衡逻辑的纯二叉搜索树,那么元素插入的顺序将对树的形状产生很大的影响。例如,取值1,2,3,4,5,6,7。如果您按照顺序4,2,6,1,3,5,7插入它们,您将获得此树:

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

这样做的原因是,我们通过下面一系列的树木:

 4 

    4 
/
    2 

    4 
/ \ 
    2  6 

    4 
/ \ 
    2  6 
/
1 

    4 
/ \ 
    2  6 
/\ 
1 3 

    4 
/ \ 
    2  6 
/\ /
1 3 5 

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

在另一方面,如果在顺序1,2,3,4,5,6插入值,7,你得到这棵树:

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

有趣的是,按排序顺序插入元素到BST是o 最糟糕的你可以为树做的事情,因为它使树成为线性结构。你最好挑选元素的随机排列插入,或对它们进行分类,并使用在排序序列中的下列递归算法(如果他们事先所有已知):

  • 如果没有的元素,你完成了。
  • 否则:
    • 将中位数插入BST。
    • 将前半部分元素递归地插入到BST中。
    • 以递归方式将第二部分元素插入到BST中。

希望这有助于! “

+1

”将中位数插入BST。“所以,为了得到中值,我必须首先获得线性数据,所以像5,3,6,2,4,1必须重新排序为1,2,3,4,5 ,6和4会是根? –

+0

@ GeorgeL-我不确定我是否理解你的评论。你能澄清吗? – templatetypedef

+0

对不起,没有实现打进提交评论。 –