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;
}
}
};