对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
public class MinimalBST {
int result = 0;
public int buildMinimalBST(int[] vals) {
build(vals, 0, vals.length -1,0);
return result;
}
// 查找的同时带着高度
private void build(int[] val, int l, int r, int h) {
if(r < l) return;
int mid = l + (r-l)/2;
h += 1;
if(h > result) result = h;
build(val, l, mid - 1, h);
build(val, mid + 1, r, h);
}
}