【LeetCode】108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:淘宝达人怎样申请大v 编辑:程序博客网 时间:2024/05/01 07:40

Description:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
题目要求:给定一个数组,其中的元素按升序排序,将它转换成一个高度平衡的二叉查找树。
题目分析:使用分治算法思想将数组分为两个子数组,分别为左子树和右子树,中间值作为左右子树的父结点。再进行递归运算即可得到一个高度平衡的二叉查找树。
Solutions:
class Solution
{
public:
    TreeNode* sortedArrayToBST(vector<int>& v)
    {
        return BST(0, v.size() - 1, v);
    }
 
private:
    TreeNode* BST(int left, int right, vector<int>& v)  
    {  
        if (left > right)  
            return nullptr;  
        else if (left == right)  
            return new TreeNode(v[left]);  
        else 
        {  
            int mid = (left + right) / 2;  
            TreeNode* node = new TreeNode(v[mid]);  
            node->left = BST(left, mid - 1, v);  
            node->right = BST(mid + 1, right, v);  
            return node;  
        }  
    }  
};


0 0