这是正确的吗? Minheap

时间:2017-07-05 00:18:41

标签: algorithm constraints permutation min-heap

enter image description here

您好,我想知道这些x是否位于最小堆的正确位置?我对么?

1 个答案:

答案 0 :(得分:0)

最高职位是不可能的,因为3比他们的孩子大(下面的某个地方会是1或2)。

第二级是可能的,因为2和3可能是兄弟1的孩子。

要成为第三级,3需要为直接父级提供2,为祖父母提供1而不需要其他任何内容。

第四级是不可能的,因为你需要3个小于3的祖先。

列表表单是从树形式直接转换。所以,这也是一场比赛。

您可能希望通过尝试将9!的每个排列插入minheap并观察3找到的位置来凭经验证明这一点。这是一个Python脚本:

from heapq import heapify
from itertools import permutations

has_three = [False] * 9
for t in permutations('123456789'):
    s = list(t)
    heapify(s)
    i = s.index('3')
    has_three[i] = True
print(has_three)

结果是:

[False, True, True, True, True, True, True, False, False]