给定数组的多少个排列导致BST的高度为2?

use*_*033 6 algorithm tree permutation binary-search-tree data-structures

从集合{1,2,3,4,5,6,7}中的每个密钥排列生成(通过连续插入节点)BST.有多少个排列决定了两个高度的树木?

很长一段时间以来,我一直坚持这个简单的问题.任何暗示任何人.

那么答案是80.

zw3*_*324 5

考虑一下树的高度是多少?

- 需要以4为根,2为左子,6为右子等.

4根是怎么来的?

- 它需要是第一次插入.所以我们现在有一个数字,6仍然可以在排列中移动.

和?

- 第一次插入后,仍有6个位置,左边3个,右子树3个.这是6选择3 = 20选择.

怎么办?

- 对于左右子树,需要首先插入它们的根,然后子节点的顺序不会影响树 - 2,1,3和2,3,1给出相同的树.每个子树为2,左右子树为2*2 = 4.

所以?

总之:C(6,3)*2*2 = 20*2*2 = 80.