题目描述
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
class MinimalBST {
public:
int buildMinimalBST(vector<int> vals) {
// write code here
//取有序数组中间数值作为二叉搜索树的根,这样高度最小。
return build(vals.size());
}
int build(int size)
{
if (size == 0)
{
return 0;
}
if (size == 1)
{
return 1;
}
return build(size / 2) + 1;
}
};