"二叉树中的完整节点是具有两个子节点的节点。证明a(非空)中的完整节点数 二叉树比叶子的数量少一个"
我遇到了这个问题,我不知道它在问我什么,因为我们还没有在讲座中做过这些问题。它要求我做什么以及如何做"证明"它?
谢谢
编辑:这就是我所做的。我不太确定这是否正确,但问题是我尝试使用英语而不是使用数学来解释它
"考虑到存在单个节点的基本情况,这意味着树具有单个叶子并且没有具有两个子节点的节点。这比叶子数少一个。如果将节点添加到具有0个子节点的节点,则具有两个子节点和叶子数的单个节点不会发生变化。如果将节点添加到具有子节点的节点,则具有两个子节点和叶数的节点数将增加1.总之,将节点添加到现有节点是不可能的。二叉树中节点之间的差异总是比叶子数少一个,因为尝试向树中添加节点不会改变或者将树和叶子的数量增加1。"
答案 0 :(得分:2)
你的课程叫什么"二叉树"在数学中称为有根二进制树。只有有根树的子节点具有子节点的概念,在非根树中没有父子层次结构,所有节点都相等。该声明仅对非空根树有效。
以下是感应的详细证明。
诱导步骤。假设对于具有 N 节点的所有有根二进制树,对于某些正整数 N ,该语句为真。给定具有 N + 1 节点的树 T ,选择叶 L 并将其删除。结果是具有 N 节点的树 T' ,其语句为true。假设 L 的父级是 L' 。有两种情况:
在任何一种情况下,叶数和完整节点数之间的差异都不会改变。因此,对于具有 N + 1 节点的所有有根二进制树,该语句都是正确的。
根据归纳原则,对于所有正整数 N ,该陈述都是正确的。
这个证明的一个更短(但仍然完全可以接受)的版本如下:
这个答案并不试图解释mathematical proof是什么,或提供构建证据的一般方法。
答案 1 :(得分:0)
fn = no. of full nodes
l = no. of leaves
n = no. of nodes
h = height of tree
对于完整的树:
h = log (n+1)
和
没有。节点= 2 *完整节点+根
那是:
2 * fn +1 = n
另外,
l = 2^(h-1)
因为除了root之外的每一行中的节点数是前一行的两倍。
所以,
l= 2^ (log (n+1) -1) = (n+1)/2
或者,
n = 2 * l -1
从之前的扣除中:
2 * fn + 1 = 2 * l - 1
或者,
fn + 1 = l