旋转没有孙子代的二叉树

时间:2018-07-10 12:51:19

标签: algorithm binary-search-tree

试图了解二叉树的旋转。互联网上的所有资源都使用不平衡的树(例如具有不同的分支高度)来解释它。 但是我想了解如何旋转这种树?还是根本不合法?:

  3
 / \
1   5

以及例如在向左旋转的情况下的外观如何?:

    5
   /
  3
 /
1

PS:我不在乎平衡,我只是想知道这样旋转是否合适?

2 个答案:

答案 0 :(得分:1)

要查看它是否合适,只需检查每个左子树包含比根小的元素,每个右子树包含更大的元素。 (如果树中有重复项,则也允许相等。)

如果是这样,则您有一个有效的二进制搜索树。就是这么重要。

(是的,您给出的示例是向左旋转,因为将根的右子级拉起成为根,其他所有内容保持不变,因为枢轴元素(5)没有子级)

答案 1 :(得分:1)

树旋转用于更改BT的结构。因此,当然,您可以根据需要旋转树(通过指定旋转条件),但是大多数情况下,它用于重新平衡BST,以便在O(log(N))期间获得search/insertion/removal性能。