晕。竟然另一样的一道题。换成sorted array的话。找到中间位置更加方便了。
TreeNode *sortTree(vector<int> &num, int start, int len){
if(len <= 0) return NULL;
int middle = len/2;
TreeNode *root = new TreeNode(num[start+middle]);
root->left = sortTree(num, start, middle);
root->right = sortTree(num, start+middle+1, len-middle-1);
}
class Solution {
public:
TreeNode *sortedArrayToBST(vector<int> &num) {
return sortTree(num, 0, num.size());
}
};