据我了解,Zig-Zag 旋转基本上是 AVL 双旋转。之字形旋转与两次向左或两次向右旋转有什么不同吗?我认为它们不是,但如果我仅仅对如下图所示的东西进行两次正确的旋转,我会得到错误的答案。
如果确实不是同一件事,那么假设 Zig-zig 旋转是一种特殊类型的旋转是否正确?
最佳答案
区别在于您使用哪些节点进行旋转以及执行这些旋转的具体顺序。让我们将用作旋转引用的节点称为基本节点,因此在 zig zig 情况下,我们有 2 个基本节点,第一个是示例中 x
的父节点,即 p
,我们首先沿着该节点进行右旋转,然后沿着节点x
进行右旋转。在您提到的情况下,两次右旋转将在相同的节点上执行。因此,总而言之,它们在我们用于旋转的节点以及使用它们的顺序方面是不同的,zig zig 首先对父节点进行右或左旋转,然后再对节点进行右或左旋转。
关于data-structures - 伸展树(Splay Tree)中的锯齿形旋转与两次右旋转或两次左旋转不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35882499/