Hash Table在进行搜索,插入以及删除时都可以保证时间复杂度O(1)
    BST(二叉平衡搜索树)例如Red-Black Tree, AVL Tree, Splay Tree等,在进行搜索,插入和删除操作时其时间复杂度是O(logn)
    乍一眼看,Hash Table吊打BST,但我们看一看BST的优势

    • 对BST进行中序遍历,可以得到按顺序排序的列表。而Hash Table要想得到同样的列表,就需要进行一些额外的操作。
    • 对于顺序统计,最近最小,最近最大,范围搜索这些操作,BST都可以很轻松的实现,但对于Hash Table来说,即便是排序这样的操作,对于其来说也并非是一个常规操作。
    • 相对于Hash Table,更容易去实现一个BST,因此可以根据具体的需求去轻松的定制满足自己需求的BST。而在实现Hash时,我们通常需要依赖特定的库。
    • 对于平衡BST,所有的操作都可以保证时间复杂度为O(logn),对于Hashing来说,O(1)只是平均时间复杂度, 对于某些特定的操作,其操作会相当的费时,尤其是需要重新对table的大小进行改变时。

    所以不难看出,如果完全去实现自己的库或完成特定的操作时,BST虽然不是最优秀的,但确是最朴实无华且最靠谱的,而Hash Table,良将一枚,但却很难真正驾驭,由于其难以被琢磨的内心,导致输出时好时坏。

    参考资料: https://www.geeksforgeeks.org/advantages-of-bst-over-hash-table/