#include #include using std::vector; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution { public: TreeNode *sortedArrayToBST(vector &num) { return sortedArrayToBST(num.begin(), num.end()); } TreeNode *sortedArrayToBST(vector::iterator beg, vector::iterator end) { if (beg == end) return NULL; auto mid = beg + (end - beg) / 2; TreeNode *root = new TreeNode(*mid); root->left = sortedArrayToBST(beg, mid); root->right = sortedArrayToBST(std::next(mid), end); return root; } };