Given an array where elements are sorted in ascending order, convert it to a 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) {}
* };
*/
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.empty())
return NULL;
//if(nums.size() == 1)
//return new TreeNode(nums[0]);
TreeNode* root = new TreeNode(0);
int middle = nums.size()/2;
root->val = nums[middle];
vector<int> left(nums.begin(),nums.begin()+middle);
vector<int> right(nums.begin()+middle+1,nums.end());
root->left=sortedArrayToBST(left);
root->right=sortedArrayToBST(right);
return root;
}
};
本文介绍了一种将排序好的数组转换为高度平衡的二叉搜索树(BST)的方法。通过递归地选取数组中间元素作为根节点,并将左半部分和右半部分数组分别构建为根节点的左右子树,从而确保了树的高度平衡。
1350

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



