包含一次来自{1、2、3、4、5、6、7}的每个值的最小堆的数量是_______。
注–这是数值类型的问题。
(A) 80
(B) 8
(C) 20
(D) 210答案: (A)
说明:将最小元素设置为根(即1 ),现在剩下6个,并且左子树将具有3个元素,每个左子树组合可以置换成2个!方法。
设计具有7个元素的最小堆的总方法= * 2! * 2! = 20 * 2 * 2 = 80
替代方法–具有1到N个元素的最小或最大堆树总数使用递归关系:
T(N) =(N-1)Ck * T(k) * T(N-k-1), where k = number of nodes on left subtree
T(1) = 1
T(2) = 1
T(3) = 2
T(4) = 3C2 * T(2) * T(1) = 3
T(5) = 4C3 * T(3) * T(1) = 8
T(6) = 5C3 * T(3) * T(2) = 20
T(7) = 5C3 * T(3) * T(3) = 80
因此,答案是80。
这个问题的测验