【问题标题】:Merging two perfect binary heaps?合并两个完美的二进制堆?
【发布时间】:2023-04-04 05:22:01
【问题描述】:

我一直在思考一个问题,想知道是否有人能指出我正确的方向:

假设二叉堆使用基于指针的树表示而不是数组表示。考虑将二叉堆 LHS 与 RHS 合并的问题。假设两个堆都是完全完整的树,分别包含 (2^L - 1) 和 (2^R -1) 个节点。
给出两个 O(log N) 算法来合并两个堆,一个如果 L = R,一个如果 |L - R| = 1。

这是一个家庭作业问题,我只需要指出正确的方向。

【问题讨论】:

  • LHS树是否需要从左边开始,还是只是为了方便起见?

标签: java data-structures merge binary-heap


【解决方案1】:

L=R 的提示:假设您刚刚删除了根。如果您需要更多,请告诉我。

【讨论】:

  • 非常感谢!我现在明白了!
  • 这是一个很好的提示。我想不通的是,教授是什么。处理 |L-R| = 1?似乎作为提示结果的算法也适用于这种情况。
  • 想一想基于数组的堆的属性,如果|L-R|=1,暗示的算法将如何违反其中一些属性。实际上,这不仅仅是基于数组的堆;想想 shape 属性。
  • 我无法得到这个提示。请进一步解释。
猜你喜欢
  • 2012-11-01
  • 2020-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-01
  • 2018-04-03
  • 2021-07-31
  • 2019-06-27
相关资源
最近更新 更多