这是一个派生问题,但我想了解哪些数据结构对于它们的实用性至少应该熟悉。 然而,这些结构如果没有一定的专业知识,就很难实现。
我认为两者之间的好界限是堆 -- 你应该能够编写一个堆,但需要一天时间。 不适合的是二叉搜索树等。编辑:我看到这取决于你在做什么。 我认为有一个列出使用原因的短语清单会很棒!
以下是一个起点列表:
- B+ 树:在单个键上良好的常规索引结构
- K-d 树:空间数据
- 红黑树:自平衡二叉搜索树;也有 AVL 或 splay 树
- 跳跃表:对于随机或(伪)顺序访问的良好混合结构
- Trie 树:线性时间字符串搜索