通过对二叉树的归纳证明

时间:2014-03-06 20:47:47

标签: algorithm tree

现在我正在研究我的算法设计教科书中的一个问题,而且我已经碰到了一些砖墙。

问题是:

  

二叉树是一个有根树,每个节点最多有两个   儿童。通过归纳显示在任何二叉树中的数量   有两个孩子的节点正好比叶子数少一个。

我有理由相信如何做到这一点:基本案例有一个节点,这意味着树有一个叶子,零节点有两个子节点。但是,我不确定归纳步骤究竟会带来什么。

2 个答案:

答案 0 :(得分:11)

具有单个节点但没有子节点的树(显然),/是一个叶子。具有两个子节点(0)的节点数正好比叶子数(1)少一个。

将节点添加到没有子节点的现有节点,不会更改包含两个子节点的节点数,也不会更改叶子数。

将节点添加到具有一个子节点的现有节点,将具有两个子节点的节点数增加1,并且还将叶数增加1.

您无法将节点添加到包含任何其他子节点数的现有节点。

由于具有两个子节点的节点的数量正好比叶子的数量少一个,并且向树中添加节点要么既不改变数字,要么两者都增加,那么它们之间的差异将始终完全相同之一。

答案 1 :(得分:1)

对具有2个孩子的节点数进行归纳:

基础 - 有2个孩子的0个节点 - 1个叶子(假设根不计为一个)。 步骤 - 令T为具有n + 1的树>有2个孩子的0个节点

=>有一个带有2个子节点a1,a2的节点a,并且在以a1或a2为根的子树中没有带有2个子节点的节点。我们可以假设它是以a1为根的子树。

=>删除以a1为根的子树,我们得到一个树T',其中n个节点有2个子节点。

=> T'有n + 1片叶子。

=>添加以a1到T'为根的子树 - 我们添加了一个叶子和一个带有2个子节点的节点。

您需要完成一些漏洞,但它正在发挥作用。 抱歉我的英语不好。