创建具有n个节点和L叶节点的AVL树的方法数

时间:2012-11-21 19:22:29

标签: algorithm computer-science

我想了解一些方法,我可以用n个节点和L个叶节点创建一个平衡二叉树。

我也知道n必须是(2 * L - 1)。

1 个答案:

答案 0 :(得分:1)

平衡二叉树是一棵树,在给定任何节点的情况下,该节点的两个子树的高度最多相差一个。所以节点数不一定是2 ^ L -1。如果树具有2 ^ L-1个节点,则根据定义,它是完整的二叉树。 所以回答你的问题.. 如果订单确实重要.. 有(n选择1种)方式(或n种方式)来选择顶级节点。然后,由于顺序很重要,有(n-1选择2)选择来选择该节点的子节点。等等。 所以它将是(n选1)*(n-1选择2)*(n-3选择2)* ....直到n = 1或0。

如果订单无关紧要.. 顶级节点仍然是相同的。您仍然可以选择(n选择1)顶级节点。对于该节点的一个孩子,我们有n-1个选择,在我们选择之后,我们对另一个孩子有n-2个选择。然后我们继续,直到我们没有选择。所以在这种情况下会有n *(n-1)*(n-2)... = n!方式

---- ---编辑 其实我犯了一个错误。总节点数不一定是2 ^ L -1。给定n个节点,树的高度为floor(lg(n))。叶节点的数量与树中节点的总数没有相关性。