将不同的元素插入二进制堆

时间:2018-06-24 07:57:59

标签: algorithm data-structures heap

可以在二进制堆中插入数字1,2,3,4,5的方式数,这样生成的二进制堆就是min堆吗?

答案= 8

================================================ =========================

我的看法-由于它是Min堆,因此最小值将在root位置。

这将是最小堆,为

                             o   -------> root will be chosen in 1 way
                            / \
                           o   o 
                          / \ 
                         o  o

->左子树将是 4C3 * 1 * 2 方式,因为根再次将获得最小值,而左子节点和右子节点则可以获取任何值。

->最后,右子树=> 1C1 = 1

总共-1 * 4C3 * 1 * 2 * 1 =8。这种方法正确吗?

1 个答案:

答案 0 :(得分:1)

是的,您的正确答案是8。让我们考虑所有安排。

LST = left subtree和RST = right subtree

第一个-1固定在根上(因为1是最低的元素)。

第一种方式:我们可以在LST中拥有(2,3,4),而在RST处只有5:在这里(2,3,4)可以通过在LST中保留4作为根以2种方式进行排列

第二种方法:在LST的(2,3,5)本身可以用2种方法完成,而在RST处保留4种

第三种方式:(2,4,5)在LST,在RST是3

第4种方式:在LST为(3,4,5),在RST为2

总路数= 2 * 2 * 2 * 2 = 8条路