108. Convert Sorted Array to Binary Search Tree

Description:

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.

 

Example:

Given the sorted array: [-10,-3,0,5,9],

One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:

      0
     / \
   -3   9
   /   /
 -10  5

class Solution {
public:
    TreeNode* sortedArrayToBSTCore(vector<int>& nums, int left, int right)
 {
     if(left>right)
        return NULL;
     TreeNode* root=new TreeNode(0);
     int core=(right+left+1)/2;
     root->val=nums[core];
     root->left=sortedArrayToBSTCore(nums,left,core-1);
     root->right=sortedArrayToBSTCore(nums,core+1,right);
     return root;
 }
 TreeNode* sortedArrayToBST(vector<int>& nums) {
        
       int begin=0;
       int end=nums.size()-1;
       return sortedArrayToBSTCore(nums,begin,end);
    }
};

 

posted @ 2018-03-01 15:47  SuperStar~  阅读(130)  评论(0编辑  收藏  举报