给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。
注意事项
There may exist multiple valid solutions, return any of them.
样例
给出数组 [1,2,3,4,5,6,7], 返回
4
/ \
2 6
/ \ / \
注意事项
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);
}
}