坏了坏了,被二叉树俘虏了。数据结构真的是很奥妙啊,对于一些比较难的性质我也想挑战一下证明,脑力耗尽了........
1.对于任何一棵二叉树T,如果其叶子数为n0,度为2的结点数为n2,则n0=n2+1.
这个结论的证明真的有一种开拓思路的感觉,让人眼前一亮。
首先从结点的角度看:
可以发现所有的结点可以按照孩子的数量分为三种,n0,n1,n2。所有的结点的总数为n0+n1+n2。
然后从边的角度考虑:
发现所有的结点(除了根结点)必然有一根链接双亲的线,那么如果有N个结点,那么就有N-1条线,观察出线的数量是N-1。而双亲链接的孩子数量,就是线的数量(n1+2*n2)。
N-1=n1+2*n2=n0+n1+n2
两侧相消,可知n0=n2+1。
2.具有n个结点的完全二叉树的深度为[log2n]+1。
对于任意的n,2^(k-1)-1<=n<2^k-1,k为此时树的深度。显然可知k-1<=log2n<k,高斯函数向下取整后加1即产生k。
3.如果对于一颗有n个结点的完全二叉树(深度为[log2n]+1)的结点按层序编号,则对任一结点i(1<=i<=n),有:
(1)如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点[i/2]
(2)如果2i>n,则结点i为叶子节点并且在最底层,无左孩子;否则,其左孩子是节点2i。
(3)如果2i + 1 > n,则结点i无右孩子;否则,其右孩子是节点2i+1.
这是王越老师ppt上的内容,翻译成人类的语言就是:对于一个结点i,它的双亲是结点[i/2],而它的左孩子是2i,右孩子是2i+1(前提是不能超过n)。
关于这题,我认为用数学归纳法是可以证明的。(不太懂数学,这是数学归纳法吗?)
对于一个结

5241

被折叠的 条评论
为什么被折叠?



