为什么contains(Object)在TreeMap中是log(n),在PriorityQueue中是O(n),而PriorityQueue在内部使用二进制堆(特殊种类的二叉树)?它们都使用树,但PriorityQueue包含的是O(n)。
答案 0 :(得分:2)
并非所有二叉树都支持O(log(N))搜索。平衡二进制搜索树支持这一点,但PriorityQueue底层的树是二进制堆,而不是二叉搜索树。使用二叉搜索树,您可以确定在每个步骤中搜索哪个子树。对于二进制堆,堆不变量不足以确定在哪里查找元素。