【发布时间】:2021-01-09 22:34:44
【问题描述】:
我已经阅读了 Splay 树,我发现,有两种方法可以构建 Splay 树。他们是
- 自下而上
- 自上而下
所以我需要知道这两种方法及其工作方式有什么区别?
【问题讨论】:
标签: c data-structures splay-tree
我已经阅读了 Splay 树,我发现,有两种方法可以构建 Splay 树。他们是
所以我需要知道这两种方法及其工作方式有什么区别?
【问题讨论】:
标签: c data-structures splay-tree
这些方法定义了搜索时如何使用张开:
自下而上:您搜索树并在同一迭代中旋转
自上而下:您首先搜索,然后在另一个迭代中旋转
你可以阅读Splay tree
这个想法也适用于创建,当使用自顶向下时,您插入密钥,就好像它是二叉树一样,而不是在另一个迭代中将它移动到头部。
【讨论】:
自上而下的展开树:在初始访问路径上执行旋转。因此,自上而下的展开树节点不需要父链接。搜索完成后,展开操作就完成了。这意味着自顶向下展开树的操作开销相对较小。
自下而上的展开树:需要从根向下遍历树,然后进行自下而上的遍历来实现展开步骤,因此自下而上的展开树实现看起来类似于的 AVL 树。此外,它还需要一个父链接或一个堆栈来存储搜索路径。
可以在 Weiss 编写的数据结构 book(第 12 章)中找到自顶向下展开树的实现。
【讨论】: