Given an array where elements are sorted in ascending order, convert it to a height balanced BST
1:特殊情况;2:取数组的中间的数构建根节点;3:数组的左边和右边分别构建左子树和右子树;4:注意递归结束情况
TreeNode *sortedArrayToBST(vector<int> &num)
{
if(num.size() == 0)
{
return NULL;
}
int size = (int)num.size();
return sortedArrayToBSTCore(num, 0, size - 1);
}
TreeNode *sortedArrayToBSTCore(vector<int> &num, int start, int end)
{
if(end < start)
{
return NULL;
}
int middle = (start + end) / 2;
TreeNode *root = new TreeNode(num[middle]);
root->left = sortedArrayToBSTCore(num, start, middle -1);
root->right = sortedArrayToBSTCore(num, middle + 1, end);
return root;
}

本文介绍了一种方法,通过选取数组中间的数作为根节点,并递归地构建左子树和右子树,将已排序的数组转换为平衡二叉搜索树。该过程包括特殊处理空数组的情况,确保最终生成的树高度平衡。
376

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



