原题:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
把一个有序数组转成搜索树,很简单,数组中间的当root,左半边作为root->left;右半边作为root->right。
这个就是在做的时候遇到了一个问题,就是指针的传递,由于c++中指针也是值传递,好的,改成引用传递,所有了这么一个诡异的头部。。。insert(TreeNode * &root ,int start , int end , vector<int> &num),
代码如下(132ms):
class Solution {
public:
TreeNode *sortedArrayToBST(vector<int> &num) {
TreeNode * result=NULL;
if(num.size()!=0){
insert(result, 0 , num.size()-1 ,num);
}
return result;
}
void insert(TreeNode * &root ,int start , int end , vector<int> &num){
if(start>end)return;
int middle = (start+end)/2;
root = new TreeNode(num[middle]);
insert(root->left , start , middle-1 , num);
insert(root->right , middle+1 , end , num);
}
};