Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
Because the requirement "height balanced", this problem becomes relative easy.
Just recursively use the middle element in the array as the root node of the current tree(sub tree).
c++
TreeNode *buildArrayBST(vector<int> &num, int start, int end){
if(start>end) return NULL;
int mid = (start+end)/2;
TreeNode *root = new TreeNode(num[mid]);
root->left = buildArrayBST(num,start,mid-1);
root->right = buildArrayBST(num,mid+1,end);
return root;
}
TreeNode *sortedArrayToBST(vector<int> &num) {
return buildArrayBST(num,0,num.size()-1);
}java
public TreeNode sortedArrayToBST(int[] num) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
return BuildTree(num, 0, num.length-1);
}
public TreeNode BuildTree(int[] num, int start, int end){
if(start>end)
return null;
int mid = (start+end)/2;
TreeNode node = new TreeNode(num[mid]);
node.left = BuildTree(num, start, mid-1);
node.right = BuildTree(num, mid+1, end);
return node;
}

本文介绍如何将一个已排序的数组转换为高度平衡的二叉搜索树(BST)。通过递归地使用数组中间元素作为当前子树的根节点,可以轻松实现这一过程。
315

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



