【程序员面试金典】对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。

题目描述

对于一个元素各不相同且按升序排列的有序序列,请编写一个算法,创建一棵高度最小的二叉查找树。

给定一个有序序列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;
    }
    
};

猜你喜欢

转载自blog.csdn.net/hellozex/article/details/81141135
今日推荐