题目
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
实现
import java.util.*;
public class MinimalBST {
public int buildMinimalBST(int[] vals) {
// write code here
if(vals==null || vals.length<1){
return 0;
}
int high = builder(vals,0,vals.length-1);
return high;
}
public int builder(int[] vals,int start,int end){
if(end<=start){
return 1;
}
int middle = (start+end)>>1;
int left = 1+builder(vals,start,middle-1);
int right = 1+builder(vals,middle+1,end);
return Math.max(left,right);
}
}