题目描述:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
Example:
Given the sorted array: [-10,-3,0,5,9],
One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:
0
/ \
-3 9
/ /
-10 5
将有序数组构造成BST,采用递归的方法,递归函数需要确定数组下标范围方便调用,然后以下标范围的中点作为根节点。
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size()==0) return NULL;
return sortedArrayToBST(nums,0,nums.size()-1);
}
TreeNode* sortedArrayToBST(vector<int>& nums, int begin, int end)
{
if(begin==end)
{
TreeNode* root=new TreeNode(nums[begin]);
return root;
}
else if(begin>end) return NULL;
int mid=(begin+end)/2;
TreeNode* root=new TreeNode(nums[mid]);
root->left=sortedArrayToBST(nums,begin,mid-1);
root->right=sortedArrayToBST(nums,mid+1,end);
return root;
}
};
本文介绍了一种将有序数组转换为高度平衡二叉搜索树(BST)的方法。通过递归方式选择中间元素作为根节点,并递归构造左右子树,确保了树的高度平衡。示例代码展示了具体的实现细节。

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



