[LeetCode]Convert Sorted Array to Binary Search Tree

来源:互联网 发布:美女直播软件 编辑:程序博客网 时间:2024/04/30 02:31

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

平分,递归。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:TreeNode *help(vector<int> &num,int a,int b){int len  = b - a + 1;if(len <= 0 )return NULL;int mid  = a+len/2;TreeNode *p = new TreeNode(num[mid]);if(len ==1)return p;int left_len = mid - a;int right_len = b - mid;if(left_len > 0)p->left = help(num,a,a+left_len-1);if(right_len > 0)p->right = help(num,a+left_len+1, b);return p;}    TreeNode *sortedArrayToBST(vector<int> &num) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        int len = num.size();if(len==0)return NULL;return help(num,0,len-1);    }};