Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
注意是高度平衡的数。所以选好每个点很关键。不用重新比较。
解法1:利用函数重载实现递归(20ms)
TreeNode *sortedArrayToBST(vector<int>& nums,int start,int end){
if(start>end) return NULL;
int mid=(start+end)/2;
TreeNode *root=new TreeNode(nums[mid]);
root->left=sortedArrayToBST(nums,start,mid-1);
root->right=sortedArrayToBST(nums,mid+1,end);
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
int n=nums.size();
TreeNode *root=NULL;
if(n==0) return root;
return sortedArrayToBST(nums,0,n-1);
}
解法2:直接利用迭代器来递归(24ms)
TreeNode* sortedArrayToBST(vector<int>& nums){//用一个函数实现,不重载
int n=nums.size();
TreeNode *root=NULL;
if(n==0) return root;
int mid=n/2;
root=new TreeNode(nums[mid]);
vector<int>::iterator first,last;
first=nums.begin();
last=nums.begin()+mid;
vector<int> v(first,last);
root->left=sortedArrayToBST(v);
if(mid<n){
first=nums.begin()+mid+1;
last=nums.end();
vector<int> w(first,last);
root->right=sortedArrayToBST(w);
}
return root;
}
本文详细介绍了如何使用递归方法将排序数组转换为高度平衡的二叉搜索树。提供了两种实现方式:函数重载的递归方法和直接使用迭代器的递归方法。解释了如何选择每个节点以确保树的高度平衡。
8320

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



