【问题标题】:Where Binary Search Tree data-structure used使用二叉搜索树数据结构的地方
【发布时间】:2019-07-17 12:24:17
【问题描述】:

我是 javascript 数据结构的新手,我试图了解如何确定是否应该使用 BST 解决特定问题。我们应该使用 BST 解决什么样的问题。

【问题讨论】:

  • 这对于 StackOverflow 来说有点宽泛。但只需阅读并关注Wikipedia article 中的链接即可为您提供大量信息。
  • @Scott Sauyet 这是一个很好的建议,但我想在这里问它以便获得正确的方向,还有一些专家的好例子:-)
  • Tbh,除了学习数据结构之外,我很少看到 BST 在上下文中被如此广泛地使用。这是因为存在其他平衡的 BST 结构(红黑树、AVL 树 ....),它们比 BST 提供更好的性能保证。例如,C++std::map 是使用红黑树实现的,java 中的一些映射也是如此。

标签: javascript algorithm data-structures binary-search-tree


【解决方案1】:

它用于许多数据不断进入/离开的搜索应用程序,例如许多语言库中的地图和集合对象。它支持插入和删除操作,保持数据有序,是红黑树和AVL树等数据结构的基础

例如你想在二叉搜索树中找到最大的数,你从根节点开始,你总是搜索右子树,直到你到达叶节点。 BST 上搜索操作的时间复杂度平均为 O(log N),这意味着如果您将数据数量从 10 增加到 100 万,您的等待时间只会从 4 增加到 20,因此它非常节省时间与线性相比一一搜索并尝试所有可能的方法。感谢 m.raynal,我忘了说 O(N) 中最坏情况下操作的时间复杂度

你可以在CodeForces找到并解决一些关于二分搜索算法和BST数据结构的问题,以便更好地理解

【讨论】:

  • "BST 上的搜索操作的时间复杂度是 O(log N)" -> 这是一般情况,不是最坏的情况。在最坏的情况下(由排序数组构建的 BST),操作的复杂度为O(n)
猜你喜欢
  • 1970-01-01
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多