https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
现在水平已经搓比到这个样子了,少有的1A。。。。
要求:平衡二叉树
所以就是二分掉数组,中间值作为当前的根,左边作为左子树,右边作为右子树
/**
* 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* sortedArrayToBST(vector<int>& nums) {
return dfs( nums, 0, nums.size()-1 );
}
TreeNode* dfs(vector<int> &nums, int left, int right) {
if( right < left )
return NULL;
if( left == right ) {
return new TreeNode( nums[left] );
}
int sz = right-left+1;
int leftSz = (sz-1)/2;
int mid = left + leftSz;
TreeNode *ret = new TreeNode( nums[mid] );
ret->left = dfs( nums, left, mid-1 );
ret->right = dfs( nums, mid+1, right );
return ret;
}
};