給定一個有序整數數組,元素各不相同且按照升序排列,編寫一個算法,建立一個高度最小的二叉查找樹

      二叉查找樹是,對於任意一個結點,左邊的結點均小於它,右邊的結點均大於它java

要建立一個高度最小的樹,就必須讓左右子結點的數量越接近越好,也就是說,要讓中間值成爲根節點,這樣,左邊的一半是左子樹,右邊的一半是右子樹app

而後,繼續以相似的方式構造整棵樹,數據每一段的中間值成爲根元素,左邊一半成爲左子樹,右邊一半成爲右子樹spa

用遞歸方式運用createMinimumBST().net

 

[java] view plain copyblog

 

  1. import BTreeBalanced.TreeNode;  
  2.   
  3.   
  4. public class minimumBST {  
  5.     TreeNode createMinumumBST(int arr[], int start, int end) {  
  6.         if (end < start) {  
  7.             return null;  
  8.         }  
  9.           
  10.         int mid = (start + end) / 2;  
  11.         TreeNode n = new TreeNode (arr[mid]);  
  12.         n.left = createMinimumBST(arr, start, mid - 1);  
  13.         n.right = createMinumumBST(arr, mid + 1, end);  
  14.         return n;  
  15.     }  
  16.       
  17.     TreeNode createMinimumBST(int arr[]) {  
  18.         return createMinimumBST(array, 0, array.length - 1);  
  19.     }  
  20. }
相關文章
相關標籤/搜索