1、题目描述
给一个升序数组,将它生成平衡BST。
2、思路
最中间的元素作为根节点,左边的元素生成左子树,右边生成右子树。
3、代码
TreeNode* sortedArrayToBST(vector<int>& nums) {
int n = nums.size();
if(n==0)
return NULL;
TreeNode* root = new TreeNode(nums[(n-1)/2]);
vector<int>v1,v2;
int i=0;
for(i=0;i<(n-1)/2;i++)
v1.push_back(nums[i]);
for(i=(n-1)/2+1;i<n;i++)
v2.push_back(nums[i]);
root->left = sortedArrayToBST(v1);
root->right = sortedArrayToBST(v2);
return root;
}