问题描述:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
https://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/点击打开链接
问题分析:
num[start, end] 有序数组转换成平衡BST
1. 取出数组中间元素将数组划分成相等的两部分。
2. num[start, mid - 1]中是左子树, num[mid + 1, end] 中是右子树,num[mid] 是根。
3. 以上过程递归构造各自子树。
示例代码:
TreeNode *sortedAarrytoTree(vector<int> &num, int start, int end)
{
if (start > end) return NULL;
int cur = (start + end) / 2;
TreeNode *root = new TreeNode(num[cur]);
root->left = sortedAarrytoTree(num, start, cur - 1);
root->right = sortedAarrytoTree(num, cur + 1, end);
return root;
}