题目描述
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
返回高度的代码如下:
import java.util.*; public class MinimalBST {
public int buildMinimalBST(int[] vals) {
return (int)(Math.log(vals.length)/Math.log(2))+1;
}
}
创建高度最小的二叉查找树代码如下:
public class createBST { static TreeNode createMinimalBST(int array[]){
return createMinimalBST(array,0,array.length-1);
} static TreeNode createMinimalBST(int[]arr,int start,int end){
if(end<start){
return null;
}
int mid=(start+end)/2;
TreeNode n=new TreeNode(arr[mid]);
n.left=createMinimalBST(arr,start,mid-1);
n.right=createMinimalBST(arr,mid+1,end);
return n;
} public static void main(String[] args) {
int []arr={0,1,2,3,4,5,6,7};
TreeNode root=createMinimalBST(arr);
System.out.println(root.right.left.val); } }