晕。竟然另一样的一道题。换成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()); } };