字典实现(Balance Binary Search tree相对于哈希表)。

| 在什么情况下使用平衡的二进制搜索树而不是哈希表来实现Dictionary ADT会更好? 我的假设是,由于二叉搜索树的自然顺序,总是最好使用它。 但是,哈希表的搜索时间确实可以与O(1)v.s.一样好。二进制树的O(logn)。 所以我不确定会发生什么情况。     
已邀请:
散列表被填满并需要重新分配内存时(在硬实时系统的上下文中),可能会出现性能问题。二叉树不存在此问题。 哈希表需要的内存比实际使用的要多,因为二叉树需要使用尽可能多的内存。     
您的问题已经包含答案: 如果您不需要任何内部顺序,请使用哈希表以获得更好的性能。如果您的需求需要某种排序,则考虑使用树。     
字典的时间复杂度为:
-----------------------------------------
| Operation   |  Dictionary |    BST    | 
-----------------------------------------
| Insert      |  O(1)       | O(log(n)) |
-----------------------------------------
| Delete      |  O(1)       | O(log(n)) |
-----------------------------------------
| Search      |  O(1)       | O(log(n)) |
-----------------------------------------
那么,您在哪里使用BST与字典?这是BST的一些主要优点。 使用BST,您始终可以执行O(log(n))操作,但是调整哈希表的大小是一项昂贵的操作 如果您需要按排序顺序获取键,则可以让它们遍历有序树。字典排序不是自然的 做统计,例如查找最接近的上下元素或范围查询。     

要回复问题请先登录注册