Пример #1
0
 TreeNode* _sortedArrayToBST(vector<int>& num, int pos, int len) {
     if (len <= 0) return NULL;
     int mid = pos + len / 2;
     TreeNode* root = new TreeNode(num[mid]);
     root -> left = _sortedArrayToBST(num, pos, mid - pos);
     root -> right = _sortedArrayToBST(num, mid + 1, len - (mid - pos + 1));
     return root;
 }
 TreeNode* _sortedArrayToBST(vector<int>& num, int start, int end){  
     if(start==end)  
         return new TreeNode(num[start]);  
     if(start>end) {  
         return NULL;  
     }  
     int mid=start+(end-start)/2;
     TreeNode* root=new TreeNode(num[mid]);  
     root->left=_sortedArrayToBST(num, start,mid-1);  
     root->right=_sortedArrayToBST(num,mid+1,end);  
     return root; 
 }
  TreeNode* _sortedArrayToBST(vector<int>& num, int start, int end) {
    if (end < start) {
      return nullptr;
    }

    int mid = start + (end - start) / 2;
    TreeNode* subroot = new TreeNode(num[mid]);
    subroot->left = _sortedArrayToBST(num, start, mid - 1);
    subroot->right = _sortedArrayToBST(num, mid + 1, end);

    return subroot;
  }
 TreeNode* sortedArrayToBST(vector<int>& nums) {
     return _sortedArrayToBST(nums, 0, nums.size() - 1);
 }
Пример #5
0
 TreeNode *sortedArrayToBST(vector<int> &num) {
     // Start typing your C/C++ solution below
     // DO NOT write int main() function
     return _sortedArrayToBST(num, 0, num.size());
 }
 TreeNode *sortedArrayToBST(vector<int> &num) {
   if (num.empty()) {
     return nullptr;
   }
   return _sortedArrayToBST(num, 0, num.size() - 1);
 }