我有一个关于平衡二叉树的理论问题。
我想要构建一个拥有2^k - 1
个节点的完美平衡树,从一个普通的不平衡的二叉搜索树开始。最简单的解决方法是使用排序好的数组/链表
,并递归地将数组分成子数组,然后从中构建完美平衡二叉树
。
然而,在极大的树大小的情况下,我需要创建一个相同大小的数组/列表
,因此这种方法将消耗大量的内存。
另一个选择是使用AVL
旋转函数,逐个插入元素并通过旋转来平衡树,具体取决于树的平衡因子——左右子树的高度差。
我的问题是,我的假设正确吗?是否有其他方法可以从不平衡的BST
创建出完美的BST
?