LeetCode: Convert Sorted Array to Binary Search Tree

来源:互联网 发布:成都 软件 招聘 编辑:程序博客网 时间:2024/04/30 03:22

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;    }};


原创粉丝点击