Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 二元搜索树中介于两个数字之间的所有数字求和所需的时间_Algorithm_Search - Fatal编程技术网

Algorithm 二元搜索树中介于两个数字之间的所有数字求和所需的时间

Algorithm 二元搜索树中介于两个数字之间的所有数字求和所需的时间,algorithm,search,Algorithm,Search,假设我们有一个平衡的二叉搜索树T,其中包含n个数。我们有两个 数字L和H,并希望将T中位于L和H之间的所有数字相加。假设 T中有m个这样的数字。有人能解释一下如何计算求和所需时间的绝对值吗?我让你来计算全部细节,但这是一个开始。算法如下: 查找树中大于L的最小数字。您可以在日志时间内完成此操作 在树上行走,每次移动到下一个最大的树,并将其添加到运行总数中 当到达至少为H的数字时停止 我假设“介于之间”表示“严格介于之间”,但您可能希望在步骤1和3中使用弱不等式。谢谢,解释得很好。“介于”的意思是

假设我们有一个平衡的二叉搜索树T,其中包含n个数。我们有两个 数字L和H,并希望将T中位于L和H之间的所有数字相加。假设
T中有m个这样的数字。有人能解释一下如何计算求和所需时间的绝对值吗?

我让你来计算全部细节,但这是一个开始。算法如下:

  • 查找树中大于
    L
    的最小数字。您可以在日志时间内完成此操作
  • 在树上行走,每次移动到下一个最大的树,并将其添加到运行总数中
  • 当到达至少为
    H
    的数字时停止

  • 我假设“介于之间”表示“严格介于之间”,但您可能希望在步骤1和3中使用弱不等式。

    谢谢,解释得很好。“介于”的意思是包括L和H。但我有一个疑问,我们考虑了搜索L所需的时间(即日志时间),但我们不需要搜索H。为什么?因为当你在树上行走时,你会发现
    H
    (或者第一个大于
    H
    )。你需要知道从哪里开始走,但在那之后,你只需要依次处理元素,直到到达另一端。你也可以从另一个方向来做:找到
    H
    ,然后向后走,直到找到小于
    L
    的东西。