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
思路分析:
递归。
class Solution {
public:
TreeNode *createTree(vector<int> &num, int left, int right)
{
if (left > right)
return NULL;
int mid = (left + right) / 2;
TreeNode *leftNode = createTree(num, left, mid - 1);
TreeNode *rightNode = createTree(num, mid + 1, right);
TreeNode *node = new TreeNode(num[mid]);
node->left = leftNode;
node->right = rightNode;
return node;
}
TreeNode *sortedArrayToBST(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
return createTree(num, 0, num.size() - 1);
}
};