把排序數組轉換爲高度最小的二叉搜索樹

給一個排序數組(從小到大),將其轉換爲一棵高度最小的排序二叉樹。
 注意事項
There may exist multiple valid solutions, return any of them.
樣例
給出數組 [1,2,3,4,5,6,7], 返回
     4
   /   \
  2     6
 / \    / \

1   3  5   7

import java.util.Arrays;
import java.util.Scanner;

/**
 * 給一個排序數組(從小到大),將其轉換爲一棵高度最小的排序二叉樹。
 注意事項
There may exist multiple valid solutions, return any of them.
樣例
給出數組 [1,2,3,4,5,6,7], 返回
     4
   /   \
  2     6
 / \    / \
1   3  5   7
 * 
 * @author Dell
 *
 */
public class Test177 {
     public  static TreeNode sortedArrayToBST(int[] A)
     {
            if(A.length==0)
            	return null;
            if(A.length==1)
            {
            	TreeNode temp=new TreeNode(A[0]);
            	return temp;
            }
          int mid=(A.length-1)/2;
          int[] left=Arrays.copyOfRange(A, 0, mid);
          int[] right=Arrays.copyOfRange(A, mid+1,A.length);
          TreeNode root=new TreeNode(A[mid]);
          root.left=sortedArrayToBST(left);
          root.right=sortedArrayToBST(right);
          return root; 
     }
     public static void preorder(TreeNode t)
     {
    	 if(t!=null)
    	 {
    		System.out.print(t.val+" ");
    		preorder(t.left);
    	    preorder(t.right);
    	 }
     }
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int[] a=new int[n];
		for(int i=0;i<a.length;i++)
		{
			a[i]=sc.nextInt();
		}
		TreeNode result=sortedArrayToBST(a);
		preorder(result);
	}

}



發佈了230 篇原創文章 · 獲贊 45 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章