微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比较两个二元堆是否相等的最广为人知的界限是什么?

如何解决比较两个二元堆是否相等的最广为人知的界限是什么?

特别是没有修改输入。

到目前为止,我一直无法找到任何关于此的信息,我想知道它是否有比明显的 O(n log n) 时间更好的解决方案。

解决方法

根据您的定义,如果两个堆在重复提取最大元素时产生相同的元素序列,则它们是相等的。由于这相当于对堆中的元素进行破坏性排序,因此相等也相当于说两个堆元素序列在排序时相等。但这相当于两个堆之间的多重集相等。

检查多集相等性可以在 O(n)(摊销)中完成,例如通过使用哈希表将第一个堆的每个元素映射到它的频率,这可以在 O(n) 中非破坏性地完成,然后根据哈希表检查第二个堆的元素,这也可以在O(n)。

由于不可能在不考虑每个元素至少一次的情况下检查相等性,因此 O(n) 也是检查两个二叉堆相等性的最严格界限。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。