题目描述【Leetcode】
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
这道题就是把一个排好序的数组变成一个height balanced BST.那么就需要用二分法不断的进行节点的选择保证每次的节点选择都小于右子树且大于左子树。代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
TreeNode* f(vector<int>& nums, int begin, int end){
if(begin >= end) return NULL;
int mid = (begin+end)/2;
TreeNode*t = new TreeNode(nums[mid]);
t->left = f(nums,begin,mid);
t->right = f(nums,mid+1,end);
return t;
}
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return f(nums,0,nums.size());
}
};

本文介绍了一种将已排序的数组转换为高度平衡二叉搜索树的方法。通过递归地选取数组中间元素作为根节点,并分别以左半部分和右半部分数组递归构造左右子树的方式实现。
330

被折叠的 条评论
为什么被折叠?



