试图了解二叉树的旋转。互联网上的所有资源都使用不平衡的树(例如具有不同的分支高度)来解释它。 但是我想了解如何旋转这种树?还是根本不合法?:
3
/ \
1 5
以及例如在向左旋转的情况下的外观如何?:
5
/
3
/
1
PS:我不在乎平衡,我只是想知道这样旋转是否合适?
答案 0 :(得分:1)
要查看它是否合适,只需检查每个左子树包含比根小的元素,每个右子树包含更大的元素。 (如果树中有重复项,则也允许相等。)
如果是这样,则您有一个有效的二进制搜索树。就是这么重要。
(是的,您给出的示例是向左旋转,因为将根的右子级拉起成为根,其他所有内容保持不变,因为枢轴元素(5)没有子级)
答案 1 :(得分:1)
树旋转用于更改BT的结构。因此,当然,您可以根据需要旋转树(通过指定旋转条件),但是大多数情况下,它用于重新平衡BST,以便在O(log(N))
期间获得search/insertion/removal
性能。