题目链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
大意:给出一个排序vector,将其转化为一颗排序二叉树,要求高度最低。
分析:从排序二叉树的特点分析,就是做二分法。
/**
* 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* gernerateNode(vector<int>& nums,int left,int right){
int mid=(left+right+1)/2;
TreeNode* root=new TreeNode(nums[mid]);
//cout<<root->val<<endl;
if(left<mid){
root->left=gernerateNode(nums,left,mid-1);
}
if(mid<right){
root->right=gernerateNode(nums,mid+1,right);
}
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
int len=nums.size();
if(len==0) return NULL;
TreeNode* root=NULL;
int left=0,right=len-1;
root=gernerateNode(nums,left,right);
//cout<<root->val<<endl;
return root;
}
};