108. Convert Sorted Array to Binary Search Tree
玩完了,不会,,,
大佬的答案,
class Solution {
TreeNode* sortedArrayToBST(vector<int>& nums, int start, int end){
if(end<=start) return NULL;
int midIdx=(end+start)/2;
TreeNode* root=new TreeNode(nums[midIdx]);
root->left=sortedArrayToBST(nums, start, midIdx);
root->right=sortedArrayToBST(nums, midIdx+1,end);
return root;
}
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return sortedArrayToBST(nums, 0,nums.size());
}
};
mgj,默写一遍,还是错误多多,,,
判断条件start>=end时就到叶子节点了。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
// class Solution {
// TreeNode* sortedArrayToBST(vector<int>& nums, int start, int end){
// if(end<=start) return NULL;
// int midIdx=(end+start)/2;
// TreeNode* root=new TreeNode(nums[midIdx]);
// root->left=sortedArrayToBST(nums, start, midIdx);
// root->right=sortedArrayToBST(nums, midIdx+1,end);
// return root;
// }
// public:
// TreeNode* sortedArrayToBST(vector<int>& nums) {
// return sortedArrayToBST(nums, 0,nums.size());
// }
// };
class Solution {
TreeNode* BuildTree(vector<int>& nums,int start,int end)
{
if(start>=end) return nullptr;
int MidIdx=(start+end)/2;
TreeNode* root=new TreeNode(nums[MidIdx]);
root->left=BuildTree(nums,start,MidIdx);
root->right=BuildTree(nums,MidIdx+1,end);
return root;
}
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
// int MidIx=nums.size()/2;
return BuildTree(nums,0,nums.size());
}
};