class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()<=0) return NULL;
return sortedArrayToBST(nums,0,nums.size()-1);
}
TreeNode* sortedArrayToBST(vector<int>& nums,int left,int right) {
if(left>right) return NULL;
TreeNode* root = new TreeNode(0);
int pos = left + (right - left)/2;
root->val = nums[pos];
root->left = sortedArrayToBST(nums,left,pos-1);
root->right = sortedArrayToBST(nums,pos+1,right);
return root;
}
};
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()<=0) return NULL;
return sortedArrayToBST(nums,0,nums.size()-1);
}
TreeNode* sortedArrayToBST(vector<int>& nums,int left,int right) {
if(left>right) return NULL;
TreeNode* root = new TreeNode(0);
int pos = left + (right - left)/2;
root->val = nums[pos];
root->left = sortedArrayToBST(nums,left,pos-1);
root->right = sortedArrayToBST(nums,pos+1,right);
return root;
}
};
本文介绍了一种将有序数组转换为平衡二叉搜索树的方法。通过递归方式选取中间元素作为根节点,再分别对左右子数组进行相同处理以构建完整的平衡二叉搜索树。

被折叠的 条评论
为什么被折叠?



