堆和BST有什么区别?
何时使用堆以及何时使用BST?
如果你想以排序的方式获取元素,BST是否优于堆?
我正在为我正在进行的项目构建一个符号表.我想知道人们对可用于存储和创建符号表的各种方法的优点和缺点的看法.
我做了很多搜索,最常推荐的是二叉树或链表或哈希表.以上所有优点和缺点是什么?(在c ++中工作)
当我需要在哈希表或平衡二叉树之间进行选择以实现集合或关联数组时,我应该考虑哪些因素?
我想知道如何在C++中实现一个集合.如果我在不使用STL提供的容器的情况下实现自己的set容器,那么最好的方法是什么呢?
我理解STL集基于二叉搜索树的抽象数据结构.那么底层数据结构是什么?数组?
另外,如何insert()为一组工作?set如何检查元素是否已经存在?
我在维基百科上读到,实现集合的另一种方法是使用哈希表.这怎么样?
我理解二叉搜索树是如何实现的,但我不确定在大多数编程语言已经内置到其标准库中的哈希表中使用它有什么好处.
有人可以提供二叉搜索树可解决的现实问题的例子吗?
使用数组实现Hashtable时,我们继承了数组的常量时间索引.使用二进制搜索树实现Hashtable的原因是什么,因为它提供了使用O(logn)的搜索?为什么不直接使用二进制搜索树?
我必须将排序后的数据存储在数据结构中.我想要使用的数据结构是堆或二进制搜索树.但我很困惑哪一个更能满足要求即快速有效的搜索.
- - 更多细节 - -
我正在设计一个从源(比如数据网格)接收数据然后将其存储到数据结构中的应用程序.来自数据GRID站的数据采用排序数字的形式.排序数据可以按升序或降序排列.
现在我必须搜索数据.这个过程应该高效快捷.
我对部分有序的树如何工作有点困惑.它们和二叉树有什么相同之处?另外,它最适合用于什么?
例如,如果我将5,6,4,9,3,1,7插入空树中,我会得到:
5
/ \
4 6
/ \
3 9
/ /
1 7
Run Code Online (Sandbox Code Playgroud)