Convert Sorted Array to Binary Search Tree——Difficulty:Medium

来源:互联网 发布:python genetic 编辑:程序博客网 时间:2024/04/30 19:56

Problem :

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

Example:

**

Algorithm:

**
根据二叉平衡搜索树的特点,因为这个数组是有序的,所以可以把数组分成两半,左边一半世左子树,右边一半是右子树,中间的是根节点,然后对每一半的数组开始递归,最后只剩下一个数时开始回溯,可以确保是一个二叉平衡树,因为一直是对半分,所以左边和右边的高度差不会大于1
时间复杂度时n/2+n/4+……+1=O(n)

**

Code:

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    TreeNode* BST(vector<int>& nums,int begin,int end) {        if(begin<=end)        {            TreeNode* root=new TreeNode(nums[(begin+end)/2]);            root->left=BST(nums,begin,(begin+end)/2-1);            root->right=BST(nums,(begin+end)/2+1,end);            return root;        }        else            return NULL;    }    TreeNode* sortedArrayToBST(vector<int>& nums) {        return BST(nums,0,nums.size()-1);    }};
0 0
原创粉丝点击