二叉搜索树相对于哈希表的优点

2024-01-08

二叉搜索树相对于哈希表有哪些优点?

哈希表可以在 Theta(1) 时间内查找任何元素,并且添加元素也同样容易......但我不确定相反的优势。


没有人指出的一项优点是二叉搜索树允许您有效地进行范围搜索。

为了说明我的想法,我想举一个极端的例子。假设你想要获取键在 0 到 5000 之间的所有元素。实际上只有一个这样的元素,还有 10000 个键不在该范围内的其他元素。 BST 可以非常有效地进行范围搜索,因为它不会搜索不可能得到答案的子树。

那么,如何在哈希表中进行范围搜索呢?您要么需要迭代每个桶空间,即 O(n),要么必须查找 1,2,3,4... 最多 5000 个中的每一个是否存在。 (0到5000之间的键是无限集合吗?例如键可以是小数)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

二叉搜索树相对于哈希表的优点 的相关文章

  • 树中的节点是否被视为其自己的祖先?

    我想知道计算机科学背景下对 祖先 定义的共识是什么 我问只是因为在算法简介 http en wikipedia org wiki Introduction to Algorithms 第二版 第 14 页 第259章 有算法的描述Tree
  • PHP 中的 MPTT(修改的先序树遍历)问题

    我的第一篇文章在这里 看来这是一个变得明智的地方 我目前正在进行一些测试 第一次尝试使用 MPTT 修改的预序树遍历 方法在 PHP 的帮助下将数据存储在 Mysql 数据库中 但是 我试图找到最注重性能的方法来获取特定级别上的所有列表元素
  • 为什么 .Net 词典中的条目是按加法顺序排列的?

    我刚刚看到这种行为 我对此感到有点惊讶 如果我向字典中添加 3 或 4 个元素 然后执行 For Each 来获取所有键 它们将以我添加的顺序出现 这让我感到惊讶的原因是字典内部应该是一个哈希表 所以我希望事情能以任何顺序出现 按键的哈希排
  • 二叉堆对于优先级队列的优点?

    看来我错过了一些非常简单的东西 优先级队列的二进制堆与快速排序的值数组相比有什么优势 在这两种情况下 我们将值保存在数组中 插入的时间复杂度为 O logN 删除最大的时间复杂度为 O 1 在这两种情况下 给定元素数组的初始构造都是 O N
  • 如何在Scala中实现尾递归快速排序

    我写了一个递归版本 def quickSort T xs List T p T T gt Boolean List T xs match case Nil gt Nil case gt val x xs head val left righ
  • 获取单词中重复次数最多的字母的数量

    我正在尝试计算单词中重复次数最多的字母的数量 function GreatestCount str var count for var i 0 i
  • 初始化 HashMap 的最佳方法

    我通常会这样做 HashMap
  • 如何从数组表示构建不完全二叉树

    如果输入是一个数组 其中null表示没有节点 input 1 2 3 null 5 null 7 请假设我已经检查过输入 对于每个array i 它的父母array i 2 不会是null 递归地 所以根不能是null 如何构建具有这样的逻
  • 为什么在排序输入上插入到树中比随机输入更快?

    现在我一直听说从随机选择的数据构建二叉搜索树比有序数据更快 这仅仅是因为有序数据需要显式重新平衡以将树高度保持在最低限度 最近我实现了一个不可变的treap http en wikipedia org wiki Treap 一种特殊的二叉搜
  • 对 Python 中的嵌套字典进行排序

    我有以下字典 var a Black grams 1906 price 2 05 Blue grams 9526 price 22 88 Gold grams 194 price 8 24 Magenta grams 6035 price
  • 高维最近邻搜索的最佳数据结构

    我实际上正在处理高维数据 50 000 100 000 个特征 并且必须对其执行最近邻搜索 我知道随着维度的增长 KD 树的性能很差 而且我还了解到 一般来说 所有空间分区数据结构都倾向于对高维数据执行详尽的搜索 此外 还有两个重要事实需要
  • 大数据使用什么数据结构

    我有一个包含一百万行的 Excel 工作表 每行有 100 列 每行代表一个具有 100 个属性的类的实例 列值是这些属性的值 哪种数据结构最适合在这里使用来存储数百万个数据实例 Thanks 这实际上取决于您需要如何访问这些数据以及您想要
  • Data.Sequence 中的 inits 和 tails 如何工作?

    Louis Wasserman 编写了当前的实现inits and tails in Data Sequence 他表示它们非常高效 事实上 只要查看代码 我就可以看到 无论它们在做什么 它们都是以干净 自上而下的方式进行的 这往往会给惰性
  • 如何将哈希表添加到多维数组?无法通过成员访问枚举分配值

    我在将哈希表添加到多维数组时遇到问题 我编码如下 Data BIBs BIB BIBName BIBName Standort Standort B cher BuchName BuchName Autor Autor 此代码正在运行并创建
  • 布隆过滤器的使用

    我正在努力理解布隆过滤器的用处 我了解了它的底层逻辑 空间压缩 快速查找 误报等 我只是不能将这个概念应用到现实生活中 因为它是有益的 一种常见的应用是在 Web 缓存中使用布隆过滤器 我们使用布隆过滤器来确定给定的 URL 是否在缓存中
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • O(n^2) 与 O (n(logn)^2)

    时间复杂度是O n 2 or O n logn 2 better 我知道当我们简化它时 它就变成了 O n vs O logn 2 and logn lt n 但是关于logn 2 n is only less than log n 2 f
  • 为什么 Hashtable 不允许空键或空值?

    正如 JDK 文档中所指定的 Hashtable 不允许空键或空值 HashMap 允许一个空键和任意数量的空值 为什么是这样 Hashtable 是较旧的类 通常不鼓励使用它 也许他们看到了对 null 键的需要 更重要的是 null 值
  • 将结构体数组传递给函数 C++

    抱歉这个菜鸟问题我只是有点困惑 如果我在 main 中有一个结构数组 我想将其传递给函数 struct MyStruct int a int b char c mayarray 5 MyStruct StructArray 10 myFun
  • 当需要2个键时如何使用“table:get”(表扩展)功能?

    我有一个包含 3 列的 txt 文件 ID polygon 1 ID polygon 2 和距离 当我将文件导入 Netlogo 时 我获得 3 个列表 list1 list2 list3 对应于 3 列 I used table from

随机推荐

  • 如何在 C 中打印 %s?

    我要打印 SomeString in C 它是否正确 printf s SomeString 不 输出 所以正确的语法是 printf s string
  • Indexeddb - 我今天可以开始为其编码吗?

    我有最新版本的 Firefox 4 beta 和 Chrome 我想开始想出一些关于我可以用indexedDb 做什么的想法 到目前为止 它似乎还无法在任何浏览器中使用 关于何时可用有什么想法吗 Thanks Walter 它也在 Goog
  • 布尔表达式的最小化是NP完全的吗?

    我知道布尔可满足性是 NP 完全的 但它是布尔表达式的最小化 简化 我的意思是采用符号形式的给定表达式并生成符号形式的等效但简化的表达式 NP 完全 我不确定是否会从可满足性降低到最小化 但我觉得可能是这样 有人有确切消息么 好吧 这样看
  • 当用户单击列标题时,如何启用 DataGridView 排序?

    我的表单上有一个 datagridview 我用以下内容填充它 dataGridView1 DataSource students Select s gt new ID s StudentId RUDE s RUDE Nombre s Na
  • 将标记添加到现有谷歌地图(无需刷新谷歌地图)[重复]

    这个问题在这里已经有答案了 我的网站上有一个谷歌地图 正在生产 几乎没有标记 我想知道是否可以在现有地图上添加标记而不刷新我的谷歌地图 这就是我所拥有的 我加载我的网页 谷歌地图显示带有标记 单击按钮后 我想在我的地图上添加一个标记 无需刷
  • 在Shiny中通过tabPanel打开URL

    我的尝试 library shiny ui lt fluidPage navbarPage Sales Dashboard id sales tab tabPanel Panel 1 Test Panel value Test panel
  • 函数式编程 - 避免匹配表达式中的可变和改变 int 值

    我刚刚开始进行函数式编程 我目前要开始的小项目是一场基本的口袋妖怪战斗 先写代码 再解释 let choosePokemon let mutable pokemon DemoData schiggy let msg Console Read
  • 按最大值或按总值标准化?

    我正在做一些涉及文档比较的工作 为此 我分析每个文档 并基本上计算某些关键字在每个文档中出现的次数 例如 Document 1 Document 2 Book gt 3 Book gt 9 Work gt 0 Work gt 2 Dolla
  • 如何在reactjs中将数据二进制转换为图像?

    我已经在尝试这个 但它仍然对我不起作用如何在reactjs中将二进制数据转换为图像 https stackoverflow com questions 41972435 how to convert the binary data to i
  • OpenMP 并行 for 循环几乎没有性能提升

    我正在学习如何在 C 中使用 OpenMP 作为 HelloWorld 练习 我正在编写一个计算素数的程序 然后我将其并行化如下 int numprimes 0 pragma omp parallel for reduction numpr
  • 将 SimpleMembership 与 EF 模型优先结合使用

    Can 简单会员制与一起使用EF 模型优先 当我尝试时 我在调用时收到 无法找到请求的 NET Framework 数据提供程序 WebSecurity InitializeDatabaseConnection 换句话说 我无法接到电话We
  • 使用 JavaScript 从元素中删除 CSS 类(无 jQuery)[重复]

    这个问题在这里已经有答案了 谁能告诉我如何仅使用 JavaScript 删除元素上的类 请不要用 jQuery 给我答案 因为我不会使用它 而且我对此一无所知 正确且标准的方法是使用classList 就是现在大多数现代浏览器的最新版本得到
  • cd 到以“-”破折号开头的目录[重复]

    这个问题在这里已经有答案了 我正在学习 Git 我的第一个任务是导航到我的项目所在的目录 不幸的是 我的文档主文件夹具有以下形式 folder1 出于排序目的 以及每次我进入时 cd folder1 我收到错误 bash cd 参数太多 在
  • 如何删除/重命名 SQL 中的重复列(不是重复行)

    当尝试从 Sybase 到 Microsoft SQL 执行 OPENQUERY 时 我遇到错误 通过以下方式获得的结果集中不允许有重复的列名 OPENQUERY 和 OPENROWSET 列名 PatientID 重复 我构建的查询根据相
  • 我们如何在 C# 中设置 Excel 图表的位置?

    我正在尝试从 C 生成 Excel 图表 图表是通过查找生成的 但它总是出现在屏幕的中央 如何设置图表的位置 Thanks 我的代码如下所示 Microsoft Office Interop Excel Workbook ebook Mic
  • Lisp 中 1 和 '1 有什么区别?

    我从来没有真正考虑过 Lisp 中的符号是否可以是数字 所以今天我尝试了一下 gt 1 1 gt 1 1 2 gt 1 1 2 gt define a 1 gt a 1 2 上面的代码是方案 但在 Common Lisp 和 Clojure
  • Django:为每个请求/表单生成新的 CSRF 令牌

    我们是否可以更改每个表单请求甚至每个请求的 CSRF 令牌 而不是一个活动会话的相同令牌 假设您有权访问request object from django middleware csrf import rotate token rotat
  • 获取特定类的所有对象

    我必须通过引用列出作为类实例的对象 class Foo class Foo1 obj1 new Foo obj2 new Foo obj32 new Foo1 我需要一个解决方案来获取 Foo 类实例的所有对象 你知道怎么做吗 获取类的所有
  • 无法使用 Appium 移动 Android SeekBar

    我有一个像这样的定制Android搜索栏 以及它可以移动到的位置 它从中间开始 我想先移动滑块 然后检查它是否已保存 我有一个使用 TouchAction 的方法 public void moveSeekBar WebElement see
  • 二叉搜索树相对于哈希表的优点

    二叉搜索树相对于哈希表有哪些优点 哈希表可以在 Theta 1 时间内查找任何元素 并且添加元素也同样容易 但我不确定相反的优势 没有人指出的一项优点是二叉搜索树允许您有效地进行范围搜索 为了说明我的想法 我想举一个极端的例子 假设你想要获