题目描述
对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。
给定一个有序序列int[] vals,请返回创建的二叉查找树的高度。
高度最小的二叉搜索树,就是左子树和右子树的节点数进行平分。
左子树和右子数也是如此。
该题不需要建树,所以答案就是log2(n) + 1.
如果要建树的话就需要题目提供的数组了。将数组的左一半作为左子树,右一半作为右子树,然后递归求解。
class MinimalBST {
public:
int buildMinimalBST(vector<int> vals) {
// write code here
int cnt = 0;
int len = vals.size();
while(len)
{
++cnt;
len /= 2;
}
return cnt;
}
};