LeetCode | Convert Sorted Array to Binary Search Tree

来源:互联网 发布:2016年nba西部决赛数据 编辑:程序博客网 时间:2024/06/05 15:53

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

首先需要明确一点,如何选择根节点使得左右平衡?

必须要求选择中间的数,这样使得整个数组被划分成为两部分,并且左右大小差距不超过1

于是我们可以利用二分的思想,传入start和end代表需要访问到的数组里面的 节点数量。

一次AC

class Solution {public:    TreeNode* sortedArrayToBST(vector<int>& nums) {        int n=nums.size();        return generate(nums,0,n-1);    }    TreeNode* generate(vector<int>& nums,int start,int end){        int n=nums.size();        if(start>end) return NULL;        //获取二者中间位置的数作为        int mid=(start+end)/2;        TreeNode* node=new TreeNode(nums[mid]);        node->left=generate(nums,start,mid-1);        node->right=generate(nums,mid+1,end);        return node;    }};
0 0