data-structures - 伸展树(Splay Tree)中的锯齿形旋转与两次右旋转或两次左旋转不同吗?

标签 data-structures tree binary-tree binary-search-tree

据我了解,Zig-Zag 旋转基本上是 AVL 双旋转。之字形旋转与两次向左或两次向右旋转有什么不同吗?我认为它们不是,但如果我仅仅对如下图所示的东西进行两次正确的旋转,我会得到错误的答案。

如果确实不是同一件事,那么假设 Zig-zig 旋转是一种特殊类型的旋转是否正确?

enter image description here

最佳答案

区别在于您使用哪些节点进行旋转以及执行这些旋转的具体顺序。让我们将用作旋转引用的节点称为基本节点,因此在 zig zig 情况下,我们有 2 个基本节点,第一个是示例中 x 的父节点,即 p,我们首先沿着该节点进行右旋转,然后沿着节点x进行右旋转。在您提到的情况下,两次右旋转将在相同的节点上执行。因此,总而言之,它们在我们用于旋转的节点以及使用它们的顺序方面是不同的,zig zig 首先对父节点进行右或左旋转,然后再对节点进行右或左旋转。

关于data-structures - 伸展树(Splay Tree)中的锯齿形旋转与两次右旋转或两次左旋转不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35882499/

相关文章:

algorithm - 如何更有效地将有序树编码为比特序列

java - 处理二叉搜索树中的相同数据

c - 实现 FSM 真的需要函数指针吗?

c - 从内存中释放单链表时出现段错误

java - 在 SWT Eclipse 中访问树的子项

java - path.remove,二叉树路径总和

algorithm - 给定二叉树中的垂直和

python - python中的数据结构 : maintaining filesystem structure within a database

pointers - 创建可变二叉树时键入名称 T undefined

java - 在java中创建动态树