题目描述
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
思路:
每次取出数组中点,然后分左右子树,依次递归即可。
import java.util.*;
public class MinimalBST {
public int buildMinimalBST(int[] vals) {
// write code here
if(vals.length==0)return 0;
int height = buildBST(vals,0,vals.length-1);
return height;
}
public int buildBST(int vals[],int start,int end){
if(start>end)return 0;
int mid = (start+end)/2;
int leftheight = 1+buildBST(vals, start, mid-1);
int rightheight = 1+buildBST(vals, mid+1, end);
if(leftheight>rightheight)return leftheight;
else return rightheight;
}
}