给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树
样例
给出数组 [1,2,3,4,5,6,7], 返回
4
/ \
2 6
/ \ / \
1 3 5 7
class Solution {
public:
/**
* @param A: A sorted (increasing order) array
* @return: A tree node
*/
TreeNode *x;
bool xxx=1;
void look(TreeNode *&x,int minn,int maxx,vector<int> A)
{
if(minn==maxx)
return;
x=new TreeNode ;
x->val=A[(minn+maxx-1)/2];
look(x->left,minn,(minn+maxx-1)/2,A);
look(x->right,(minn+maxx-1)/2+1,maxx,A);
}
TreeNode *sortedArrayToBST(vector<int> &A) {
int xx=A.size();
if(xx==0)
return NULL;
//x=new TreeNode;
look(x,0,xx,A);
return x;
// write your code here
}
}; 解题思路