二叉树的实现

时间:2011-08-29 13:18:33

标签: algorithm proof

以下文字是算法手册的摘录。

  

我们可以画出来   二进制树使用常用于链接的矩形框   列表,但树通常绘制为由线连接的圆   因为它们实际上是图形。我们也没有明确地绘制NULL   引用树时的链接因为每个二叉树都带有N.   节点需要N + 1个NULL链接。

我的问题是作者的意思是每个具有N个节点的二叉树都需要N + 1个空链接?作者如何使用N + 1号码?

3 个答案:

答案 0 :(得分:7)

如果您有一个1节点的树,则有2个空链接(根目录上的左侧和右侧)。如果向左或向右添加节点,则填充1 null并再添加2个节点。这种情况在无限期内持续存在,因此为每个节点添加了1个额外的空叶。

答案 1 :(得分:4)

你可以通过mathematical induction证明这一点。

基本案例

1个节点有2个NULL链接 - 满足属性。

归纳步骤

现在假设所有具有n-1个节点的树都有n个NULL链接。然后我们希望显示所有具有n个节点的树都有n + 1个NULL链接。

获取包含n个节点的任何树,然后选择leaves之一。删除这片叶子。根据我们的假设,我们现在有一个带有n个NULL链接的树。如果我们再次添加叶子,我们将失去一个NULL链接,但获得两个。因此,我们在具有n个节点的树上有n - 1 + 2 = n + 1个NULL链接。

答案 2 :(得分:1)

观察:每个边缘都充当链接。 N个节点的N-1个边缘。

完全链接:2N。

空链接:2N - (N-1)= N + 1。