【发布时间】:2020-04-02 13:04:11
【问题描述】:
我正在编写代码来平衡不平衡的 BST。首先,我从不平衡的 BST 创建了一个排序的 ArrayList。在那之前一切都很好。
之后,我尝试从排序后的 ArrayList 创建一个平衡的 BST,但新制作的 BST 只包含 ArrayList 的一半元素(节点)。不过,根已更改为正确的。
我搜索并阅读了许多关于平衡 BST 的解决方案,但找不到与我的问题相关的解决方案。 我真的很感激你的建议。谢谢。
public BinaryTreeNode<Integer> BalanceBST(ArrayList<Integer> list, int min, int max)
{
if (max <= min)
{
return null;
}
int mid = (min + max) / 2;
BinaryTreeNode<Integer> root = new BinaryTreeNode<Integer>(list.get(mid));
root.setLeft(arrayListToBST(list, min, mid - 1));
root.setRight(arrayListToBST(list, mid + 1, max));
return root;
}
【问题讨论】: