C++
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */ class Solution { public: /** * @param A: A sorted (increasing order) array * @return: A tree node */ TreeNode *sortedArrayToBST(vector<int> &A) { // write your code here if (0 == A.size()) { return NULL; } return buildTree(A, 0, A.size()-1); } TreeNode *buildTree(vector<int> &A, int from, int to) { if (from > to) { return NULL; } int mid = (from+to)/2; TreeNode *node = new TreeNode(A[mid]); node->left = buildTree(A, from, mid-1); node->right = buildTree(A, mid+1, to); return node; } };