2017-07-05 133 views
-4

enter image description here这是正确的吗? Minheap

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

+0

我投票是题外话,因为它不是一个规划问题,关闭了这个问题,这是一个计算机科学问题。 – gunr2171

回答

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]