Convert Sorted Array to Binary Search Tree
Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree.
Example 1 Input: nums = [-10,-3,0,5,9] Output: [0,-3,9,-10,null,5] Explanation: [0,-10,5,null,-3,null,9] is also accepted:
Example 2: Input: nums = [1,3] Output: [3,1] Explanation: [1,null,3] and [3,1] are both height-balanced BSTs.
C++ Solution
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
TreeNode* sortedArrayToBST(vector<int>& nums) {
if (nums.empty()) {return nullptr;}
int idx = nums.size() / 2;
TreeNode* root = new TreeNode(nums[idx]);
vector<int>leftNums, rightNums;
for (int i = 0; i < idx; i++) {
leftNums.push_back(nums[i]);
}
for (int i = idx + 1; i < nums.size(); i++)
{
rightNums.push_back(nums[i]);
}
root->left = sortedArrayToBST(leftNums);
root->right = sortedArrayToBST(rightNums);
return root;
}