Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
Subscribe to see which companies asked this question
解题思路:利用递归思想去解决,首先找到有序数组的中位数节点,即位于最中间位置的节点作为根节点,然后依次递归建立左右子树
TreeNode* sortedArrayToBST(vector<int>& nums) {
int len = nums.size();
if(len <= 0)
return NULL;
if(len == 1)
return new TreeNode(nums[0]);
int mid = len / 2;
TreeNode *root = new TreeNode(nums[mid]);
vector<int> leftVec(nums.begin(),nums.begin() + mid);
vector<int> rightVec(nums.begin() + mid + 1, nums.end());
root->left = sortedArrayToBST(leftVec);
root->right = sortedArrayToBST(rightVec);
return root;
}