为什么 contains(Object) 在 TreeMap 中是 log(n) 而在 PriorityQueue 中是 O(n),而 PriorityQueue 内部使用的是二叉树(二叉堆)?
Why contains(Object) is log(n) in TreeMap but O(n) in PriorityQueue, while PriorityQueue uses binary tree (binary heap) internally?
为什么 contains(Object) 在 TreeMap 中是 log(n) 而在 PriorityQueue 中是 O(n),而 PriorityQueue 内部使用二叉堆(一种特殊的二叉树)?他们都使用树,但 PriorityQueue 的包含是 O(n)。
并非所有二叉树都支持 O(log(N)) 搜索。平衡二叉 search 树支持这一点,但 PriorityQueue 下的树是二叉堆,而不是二叉搜索树。使用二叉搜索树,您可以知道在每个步骤中搜索哪个子树。对于二叉堆,堆不变量不足以确定在哪里寻找元素。
为什么 contains(Object) 在 TreeMap 中是 log(n) 而在 PriorityQueue 中是 O(n),而 PriorityQueue 内部使用二叉堆(一种特殊的二叉树)?他们都使用树,但 PriorityQueue 的包含是 O(n)。
并非所有二叉树都支持 O(log(N)) 搜索。平衡二叉 search 树支持这一点,但 PriorityQueue 下的树是二叉堆,而不是二叉搜索树。使用二叉搜索树,您可以知道在每个步骤中搜索哪个子树。对于二叉堆,堆不变量不足以确定在哪里寻找元素。