一个设计良好(注意是设计良好的)的hash table 如下操作均为O(1)
- Search
- Insert
- Delete
而self-balancing BST 这些操作均为O(logn)
所以在上面这些操作上hash table更优质, 但是如果有如下的需求场景, BST比hash table跟合适
- 得到所有的内容并且是sorted的
- order statistics, finding closest lower and greater elements, doing range queries are easy to do with BSTs
- 对BST来说, 那些基本操作都是O(logn), 虽然hash table 的average time是O(1), 但某个特定操作为O(n) (resize hash table时)
2015-08-16