splay树中自下而上和自上而下方法的区别是什么?

时间:2015-01-06 07:09:14

标签: c data-structures splay-tree

我读过有关Splay树的内容,我发现,有两种方法可用于构建展开树。他们是

  1. 自下而上
  2. 自上而下
  3. 所以我需要知道这两种方法和它们的工作有什么区别?

2 个答案:

答案 0 :(得分:2)

这些方法定义了搜索时如何使用splaying:

自下而上:搜索树并按相同的迭代旋转

自上而下:您首先搜索并在另一次迭代中旋转

您可以阅读Splay tree

这个想法也适用于创作,当使用自上而下时,你插入密钥就好像它是一个二元搜索树,而不是在另一次迭代中将它移动到头部。

答案 1 :(得分:0)

自顶向下展开树:在初始访问路径上执行轮换。因此,自顶向下展开树节点不需要父链接。一旦搜索完成,展开操作就完成了。这意味着自顶向下展开树的操作开销相对较小。

自底向上展开树:需要从根向下遍历树,然后进行自底向上遍历来实现展开步骤,因此自底向上展开树实现看起来类似于一棵 AVL 树。此外,它需要一个父链接或一个堆栈来存储搜索路径。

可以在 Weiss 编写的数据结构 book(第 12 章)中找到自顶向下展开树的实现。