LeetCode: Convert Sorted Array to Binary Search Tree

Problem:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
For example, Given array  [9,12,14,17,19,23,50,54,67,72,76] , the below BST is one possible solution.
An example of a height-balanced tree. A height-balanced tree is a tree whose subtrees differ in height by no more than one and the subtrees are height-balanced, too.
/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    void buildTree(vector<int> &num, int s, int e, TreeNode* &node)
    {
        if (s <= e)
        {
            int mid = (s+e)/2;
            node = new TreeNode(num[mid]);
            buildTree(num, s, mid-1, node->left);
            buildTree(num, mid+1, e, node->right);
        }
    }
    
    TreeNode *sortedArrayToBST(vector<int> &num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        TreeNode* root = NULL;
        buildTree(num, 0, num.size()-1, root);
        return root;
    }
};

좋은 웹페이지 즐겨찾기