B +树是自平衡树像AVL树。 这里我们可以看到右侧的旋转是如何左,用来保持AVL树平衡。
而这里是说明在B +树插入一个链接。 这种插入技术不涉及任何旋转,如果我没有错,以保持树平衡。 因此它看起来简单。
问:是否有任何类似的(不使用旋转或任何其他技术),以保持平衡二叉树的平衡?
B +树是自平衡树像AVL树。 这里我们可以看到右侧的旋转是如何左,用来保持AVL树平衡。
而这里是说明在B +树插入一个链接。 这种插入技术不涉及任何旋转,如果我没有错,以保持树平衡。 因此它看起来简单。
问:是否有任何类似的(不使用旋转或任何其他技术),以保持平衡二叉树的平衡?
答案是... yes和no。
B树不需要,因为他们有一定的松弛与他们有多少不同的密钥打包成一个节点进行旋转。 当您添加越来越多的按键成B树,你能避免树成为吸收这些密钥到节点本身渐行渐远。
二叉树没有这种奢侈。 如果你插入一个关键为二叉树,它会在所有情况下增加在该树的一些分支的高度以1,因为这关键需要进入自己的节点。 旋转通过确保如果某些枝上长出太多,那高度洗牌到树的其余打击树的整体增长。
最均衡BSTS有某种再平衡战略,涉及到旋转,但不是所有的事。 这种策略并不直接涉及旋转的一个显着的例子是替罪羊树 ,它由巨大的撕裂出子树主树,最佳重建他们,然后再刷胶子树回主树重新平衡。 这种方法在技术上不涉及任何旋转,是实现平衡树一个非常干净的方式。
这就是说 - 替罪羊树的最节省空间的实现确实使用旋转到不平衡树转换成一个完全平衡的一个。 你不必用旋转来做到这一点,但如果间隔较短,它可能这样做的最佳方式。
希望这可以帮助!