注意什么都不输入的越界问题。
每次二分,因为排好序,以中点为根即可。
子树同理。
附上代码:
class Solution { public: TreeNode *sortedArrayToBST(vector<int> &num) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. if(num.size() <= 0) return NULL; int size = num.size()-1; int mid = size / 2; TreeNode * root = new TreeNode(num[mid]);<br /> TreeNode * left = GetNode(num,0,mid-1); TreeNode * right = GetNode(num,mid+1,size); root->left = left; root->right = right; return root; } TreeNode *GetNode(vector<int> &num,int a,int b) { if(a > b) { return NULL; } int mid = a + (b - a) / 2; TreeNode * node = new TreeNode(num[mid]); TreeNode * left = GetNode(num,a,mid-1); TreeNode * right = GetNode(num,mid+1,b); node->left = left; node->right = right; return node; } };