java skew heap merge

时间:2011-06-25 16:01:54

标签: java algorithm merge heap

不必是java,但我正在尝试理解倾斜堆的合并过程。我不明白为什么步骤中的粗体部分是这样的。

  • 比较两堆的根;让p成为 具有较小根的堆,以及q 是另一堆。
  • 设r为结果的名称 新堆。
  • 让r的根成为p的根 (较小的根),让r是正确的 子树是p的左子树。
  • 现在,计算r的左子树 递归地合并p的右子树 与q。

算法是否可以沿着对称轴修改(例如我对树进行镜像反射)并让r的左子树是p的右子树并递归合并到r的右侧?它只是一个约定,还是以上面列出的方式更有效率?

1 个答案:

答案 0 :(得分:0)

左/右的选择完全是任意的,但一旦你做到了,你必须坚持下去。毕竟,你可以拿你的堆,绘制它的图片,然后镜像它,它仍然是一个有效的堆。这个的根本原因是你可以接受任何程序,并且左右交换所有出现的变量,结果程序仍然有效,而且完全相同。