/**
- Definition for binary tree
- struct TreeNode {
-
int val;
-
TreeNode *left;
-
TreeNode *right;
-
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
- };
/
TreeNode new_node(int x){
TreeNode* node=(TreeNode*)malloc(sizeof(TreeNode));
node->val=x;
node->left=node->right=NULL;
return node;
}
TreeNode* fun(vector arr, int s, int e){
if(s>e)
return NULL;
int mid = s+(e-s)/2;
TreeNode* root=new_node(arr[mid]);
if(s==e)
return root;
root->left=fun(arr,s,mid-1);
root->right=fun(arr,mid+1,e);
return root;
}
TreeNode* Solution::sortedArrayToBST(const vector &A) {
TreeNode* root=fun(A,0,A.size()-1);
return root;
}