Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript 其中使用了二进制搜索树数据结构_Javascript_Algorithm_Data Structures_Binary Search Tree - Fatal编程技术网

Javascript 其中使用了二进制搜索树数据结构

Javascript 其中使用了二进制搜索树数据结构,javascript,algorithm,data-structures,binary-search-tree,Javascript,Algorithm,Data Structures,Binary Search Tree,我不熟悉javascript中的数据结构,并试图理解如何找出是否应该使用BST解决特定问题。我们应该使用BST解决什么样的问题。它用于许多搜索应用程序,其中数据不断输入/输出,例如许多语言库中的映射和设置对象。它支持插入和删除操作,保持数据的有序性,是红黑树和AVL树等数据结构的基础 例如,要在二叉搜索树中查找最大的数,请从根节点开始搜索右子树,直到到达叶节点为止。 BST上搜索操作的时间复杂度平均为O(logn),这意味着如果将数据数量从1000万增加到100万,等待时间将从4增加到20,因此

我不熟悉javascript中的数据结构,并试图理解如何找出是否应该使用BST解决特定问题。我们应该使用BST解决什么样的问题。

它用于许多搜索应用程序,其中数据不断输入/输出,例如许多语言库中的映射和设置对象。它支持插入和删除操作,保持数据的有序性,是红黑树和AVL树等数据结构的基础

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


您可以在

中找到并解决有关二进制搜索算法和BST数据结构的一些问题,以便更好地理解这对于StackOverflow来说有点宽泛。但是,只要阅读并遵循来自的链接,就会给你提供大量信息。@Scott Sauyet这是一个很好的建议,但我想在这里问一下,以便获得正确的方向,还有一些来自专家的好例子:-)Tbh,除了学习数据结构之外,我很少看到BST在上下文中被如此频繁地使用。这是因为存在其他平衡的BST结构(红黑树、AVL树……),它们比BST提供更好的性能保证。例如,
C++
std::map
是用红黑树实现的,有些映射也是用java实现的。“BST上搜索操作的时间复杂度是O(logn)”->这是平均情况,而不是最坏的情况。在最坏的情况下(从排序数组构建的BST),操作的复杂性是
O(n)