LintCode: Convert Sorted Array to Binary Search Tree With Minimal Height

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;
    }
};
原文地址:https://www.cnblogs.com/CheeseZH/p/5000037.html