链接: https://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
把一个有序数组转换成一棵AVL树
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution
{
public:
TreeNode *makeNode(int l,int r,vector<int> num)
{
if(l+1==r)
{
TreeNode *root=new TreeNode(num[r]);
root->left=new TreeNode(num[l]);
return root;
}
if(l==r)
{
return new TreeNode(num[l]);
}
int mid=(l+r)/2;
TreeNode *root=new TreeNode(num[mid]);
root->left=makeNode(l,mid-1,num);
root->right=makeNode(mid+1,r,num);
return root;
}
TreeNode *sortedArrayToBST(vector <int> &num)
{
TreeNode *ans=NULL;
if(!num.empty())
ans=makeNode(0,num.size()-1,num);
return ans;
}
};