How many permutations of a given array result in BST's of height 2?

后端 未结 3 1504
旧巷少年郎
旧巷少年郎 2021-02-06 11:48

A BST is generated (by successive insertion of nodes) from each permutation of keys from the set {1,2,3,4,5,6,7}. How many permutations determine trees of height two?

I

相关标签:
3条回答
  • 2021-02-06 12:03

    Consider how the tree would be height 2?

    -It needs to have 4 as root, 2 as the left child, 6 right child, etc.

    How come 4 is the root?

    -It needs to be the first inserted. So we have one number now, 6 still can move around in the permutation.

    And?

    -After the first insert there are still 6 places left, 3 for the left and 3 for the right subtrees. That's 6 choose 3 = 20 choices.

    Now what?

    -For the left and right subtrees, their roots need to be inserted first, then the children's order does not affect the tree - 2, 1, 3 and 2, 3, 1 gives the same tree. That's 2 for each subtree, and 2 * 2 = 4 for the left and right subtrees.

    So?

    In conclusion: C(6, 3) * 2 * 2 = 20 * 2 * 2 = 80.

    0 讨论(0)
  • 2021-02-06 12:08

    Note that there is only one possible shape for this tree - it has to be perfectly balanced. It therefore has to be this tree:

             4
           /   \
          2     6
         / \   / \
        1   3 5   7
    

    This requires 4 to be inserted first. After that, the insertions need to build up the subtrees holding 1, 2, 3 and 5, 6, 7 in the proper order. This means that we will need to insert 2 before 1 and 3 and need to insert 6 before 5 and 7. It doesn't matter what relative order we insert 1 and 3 in, as long as they're after the 2, and similarly it doesn't matter what relative order we put 5 and 7 in as long as they're after 6. You can therefore think of what we need to insert as 2 X X and 6 Y Y, where the X's are the children of 2 and the Y's are the children of 6. We can then find all possible ways to get back the above tree by finding all interleaves of the sequences 2 X X and 6 Y Y, then multiplying by four (the number of ways of assigning X and Y the values 1, 3, 5, and 7).

    So how many ways are there to interleave? Well, you can think of this as the number of ways to permute the sequence L L L R R R, since each permutation of L L L R R R tells us how to choose from either the Left sequence or the Right sequence. There are 6! / 3! 3! = 20 ways to do this. Since each of those twenty interleaves gives four possible insertion sequences, there end up being a total of 20 × 4 = 80 possible ways to do this.

    Hope this helps!

    0 讨论(0)
  • 2021-02-06 12:14

    I've created a table for the number of permutations possible with 1 - 12 elements, with heights up to 12, and included the per-root break down for anybody trying to check that their manual process (described in other answers) is matching with the actual values.

    http://www.asmatteringofit.com/blog/2014/6/14/permutations-of-a-binary-search-tree-of-height-x

    0 讨论(0)
提交回复
热议问题