Given an array where elements are sorted in ascending order,
convert it to a height balanced BST.
思路:
由于是有序数组,那么根节点肯定是中间的那个数字,然后递归处理左子树和右子树即可。
TreeNode* ArrayToBST(vector<int>& nums, int i, int j) { if (i > j) return NULL; int middle = (i + j) / 2; TreeNode *root = new TreeNode(nums[middle]); root->left = ArrayToBST(nums, i, middle - 1); root->right = ArrayToBST(nums,middle + 1,j); return root; } TreeNode* sortedArrayToBST(vector<int>& nums) { int size = nums.size(); if (size == 0) return NULL; TreeNode *root = ArrayToBST(nums,0,size-1); return root; }