当您使用二进制堆来实现优先级队列时,表明插入操作最多需要1 + lg N个比较。(lg N = N的log,到基数2)。
考虑下面的图片,
这里树的最大高度为3.即使节点T被添加到最底层,当T游向上时,它只会遇到包括根的最多3个节点。这意味着只有3最多比较。
但声明表明最多会有1 + lg 11 = 1 + 3 = 4比较。
这怎么可能?有人可以解释一下吗?
答案 0 :(得分:0)
考虑一下如果现在插入节点B会发生什么。最多可以有四个比较,例如:
B<E? B<G? B<S? B<T?
希望能回答你的问题。