【问题标题】:Inserting Distinct elements into a Binary Heap将不同元素插入二叉堆
【发布时间】:2018-06-24 07:57:58
【问题描述】:

可以将数字1,2,3,4,5插入二进制堆的方式数,使得生成的二进制堆是最小堆?

答案 = 8

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

我的看法 - 因为它是一个最小堆,所以最小值将在根。

这将是最小堆

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

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

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

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

【问题讨论】:

  • @MBo 我的方法错了吗?
  • 不,它是正确的。链接包含更一般的重复代码。
  • @MBo 谢谢亲爱的朋友! :)

标签: algorithm data-structures heap


【解决方案1】:

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

LST = left subtree 和 RST = right subtree

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

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

2nd way :(2,3,5) 在 LST,它本身可以通过 2 种方式完成,并在 RST 保持 4 种方式

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

4th way : (3,4,5) 在 LST 和 2 在 RST

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

【讨论】:

  • @Geeklovenerds 你的方法也没有错,朋友 :)
  • 谢谢大哥!愿和平与你同在! ::)))
猜你喜欢
  • 1970-01-01
  • 2016-07-17
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多