展开树中值的范围函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了展开树中值的范围函数?相关的知识,希望对你有一定的参考价值。

我是数据结构的初学者。我正在尝试使用splay树为范围函数编写一些伪代码:Range(S, A, B),它将S更改为其键值C满足A≤C≤B的所有成员的集合。我知道splay树属于类型二叉搜索树并实现自己的splay操作。基本上,我试图返回A和B之间的一系列值。但是,我无法理解我应该如何做到这一点,或者我应该在哪里开始,以及我应该检查什么条件。我已经阅读了splay树的定义,并且知道它们就像使用移动到前端算法的二叉搜索树。

这是我到目前为止:

Algorithm Range(Array S, int A, int B): array Set
S = new array(size) //Initialize an empty array of some size
if (A > B) then return NULL

在这一点之后我感到有些失落。我不知道如何检查展开树的值。如果我能提供更多信息,或者我应该去哪个方向,请告诉我。

答案

根据Wikipedia

展开树是一种自我调整的二叉搜索树,具有附加属性,最近访问的元素可以再次快速访问。它在O(log n)摊销时间内执行基本操作,例如插入,查找和删除。

然而,由于“展开”操作仅适用于随机搜索,因此该树可以被认为是普通的“二叉搜索树”。

算法成了,

Range (BSTree T, int A, int B)
  int Array S

  S ← Empty array
  If A <= B then
    For each C in T
      If A <= C and C <= B then
        Append C to S
  Return S

也就是说,按顺序遍历树T;并且,对于满足条件的每个项目C,将项目添加到数组S.如果没有项目满足条件,则返回空数组。

For each,如果在实现语言中不可用,可以使用描述为in-order的算法来实现

inorder(node)
  if (node = null)
    return
  inorder(node.left)
  visit(node)
  inorder(node.right)

其中vist(node)是测试物品是否符合条件的地方。

以上是关于展开树中值的范围函数?的主要内容,如果未能解决你的问题,请参考以下文章

泰勒公式(泰勒展开式,泰勒中值定理)使用基本技巧

高等数学笔记

拉格朗日中值定理的条件

如何解决EasyUI树菜单单击文字无法展开菜单的问题

开平方根算法

:微分中值定理:第一节:微分中值定理