使用二叉搜索树的具体例子?

时间:2011-02-15 23:44:56

标签: data-structures tree hashtable binary-search-tree

我理解二叉搜索树是如何实现的,但我不确定在大多数编程语言已经内置到其标准库中的哈希表中使用它有什么好处。

有人可以提供二叉搜索树可解决的实际问题的例子吗?

5 个答案:

答案 0 :(得分:30)

答案 1 :(得分:1)

需要二叉树的一个例​​子是计算机图形中的二进制空间分区

http://en.wikipedia.org/wiki/Binary_space_partitioning

需要二叉树,因为该算法需要保留二叉树中节点之间的关系。还有许多其他算法,其中树的结构很重要,因此哈希表不是合适的结构。

使用二叉树而不是哈希表的另一个好理由是,当您无法轻松为数据项生成有效哈希时,您可以生成比较函数。

通常,对于简单的数据存储和检索,哈希表更加优化,但实现起来更复杂。

答案 2 :(得分:0)

最容易被忽视的是许多文件系统使用二叉树来管理目录列表。它们很少使用普通的二叉树,但有些变体如B树。这是因为树的磁盘存储问题对于实现的细节非常重要。他们使用这种结构的原因是效率和速度。这使他们可以做一些事情,比如支持目录中的数千个文件。文件创建和删除时间的比较突出了文件系统这方面的效率。

二叉树也用于许多渲染3D对象的游戏。再一次,原因是速度。实际上,速度非常重要,以至于某些游戏引擎(例如Quake引擎)实际上已经预生成了二进制树,并且作为地图构建过程的一部分进行了预优化。

答案 3 :(得分:0)

需要注意的是二进制搜索树节省空间。例如,你有10个整数要存储,你有一个映射从0到99的哈希函数,那么你需要一个100个整数的数组。 如果您使用了二进制搜索树,那么您将只分配10个元素所需的内存

答案 4 :(得分:0)

这应该是一个评论,但自平衡BST(log(n))被广泛使用而不是BST。普通BST具有最坏情况的O(N)插入/移除时间。