Hash Table supports following operations in Θ(1) time.
So Hash Table seems to beating BST in all common operations. When should we prefer BST over Hash Tables, what are advantages. Following are some important points in favor of BSTs.
- We can get all keys in sorted order by just doing Inorder Traversal of BST. This is not a natural operation in Hash Tables and requires extra efforts.
- Doing order statistics, finding closest lower and greater elements, doing range queries are easy to do with BSTs. Like sorting, these operations are not a natural operation with Hash Tables.
- BSTs are easy to implement compared to hashing, we can easily implement our own customized BST. To implement Hashing, we generally rely on libraries provided by programming languages.
- With Self-Balancing BSTs, all operations are guaranteed to work in O(Logn) time. But with Hashing, Θ(1) is average time and some particular operations may be costly, especially when table resizing happens.
This article is contributed by Himanshu Gupta. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
- Data Structure for Dictionary and Spell Checker?
- Advantages of Trie Data Structure
- Find the node with minimum value in a Binary Search Tree
- Construct BST from given preorder traversal | Set 1
- Inorder predecessor and successor for a given key in BST
- Binary Search Tree | Set 1 (Search and Insertion)
- Find k-th smallest element in BST (Order Statistics in BST)
- Root to leaf path sum equal to a given number in BST
- Total sum except adjacent of a given node in BST
- Number of elements smaller than root using preorder traversal of a BST