【问题标题】:What is the Difference between Bottom-up and Top down methods in splay tree?展开树中自下而上和自上而下的方法有什么区别?
【发布时间】:2021-01-09 22:34:44
【问题描述】:

我已经阅读了 Splay 树,我发现,有两种方法可以构建 Splay 树。他们是

  1. 自下而上
  2. 自上而下

所以我需要知道这两种方法及其工作方式有什么区别?

【问题讨论】:

    标签: c data-structures splay-tree


    【解决方案1】:

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

    自下而上:您搜索树并在同一迭代中旋转

    自上而下:您首先搜索,然后在另一个迭代中旋转

    你可以阅读Splay tree

    这个想法也适用于创建,当使用自顶向下时,您插入密钥,就好像它是二叉树一样,而不是在另一个迭代中将它移动到头部。

    【讨论】:

    • 嗯,我认为自下而上是两遍(首先遍历树作为 BST,然后向后旋转一个节点直到它成为根),自上而下是一遍(遍历树时就地旋转)
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 2011-08-18
      • 1970-01-01
      • 2016-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2021-10-25
      相关资源
      最近更新 更多