繁体   English   中英

通过对二叉树的归纳证明

[英]Proof by induction on binary trees

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

问题是:

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

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

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

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

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

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

由于具有两个子节点的节点的数量恰好比叶子的数量少一个,并且向树中添加节点既不改变数字,也不改变两者,那么它们之间的差异将始终为1。

通过感应有2个孩子的节点数:

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

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

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

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

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

你需要完成一些漏洞,但它有效。 对不起,我的英语不好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM