2011-12-13 56 views
0

好吧,這看起來更好,但給空指針異常?給定一個有序的整數序列編寫一個算法來構建一個具有理想拓撲的binarySearchTree?

公共靜態BST idealTop(可比[] C){

 BST X = new BST(); 

     helperIdeal(C, X.root,(C.length/2)); 

     return X; 
    } 

    public static void helperIdeal(Comparable [] C, node R,int mid){ 


      if(mid<0||mid>C.length-1){ 
       R.left = null; 
          R.right = null; 


     } 

      else{ 
      R.data = C[mid]; 
      helperIdeal(C,R.left,mid/2); 
      helperIdeal(C,R.right,(mid*2)-1); 
     } 
    } 
+0

現在代碼被改變了,我被困在終止條件 – 2011-12-14 19:49:37

回答

2

,我要在這裏認爲這是一個家庭作業的問題...

訣竅最好的算法是,名單在底部讀取時排序和BST也總是排序。

想想你的數據結構以及如何引用樹中的每個節點。如果你做得很好,你應該得到一個線性算法。

+0

爲什麼我不斷得到這個「我認爲這是一個家庭作業問題」? – 2011-12-14 00:01:05

+0

你是什麼意思的線性算法? – 2011-12-14 00:01:33

0

具有理想拓撲的二叉搜索樹意味着平衡搜索樹。所以你得到登錄。

爲了做到這一點,你需要從頭開始,並可能在你的數組中保留多個指針,並將你的指針移動到數組的兩半,直到你把所有的元素都放到樹上並且樹是平衡的。

容易。

相關問題