关于 具有n个结点的完全二叉树的深度为「log2n」+1的证明
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 具有n个结点的完全二叉树的深度为「log2n」+1的证明相关的知识,希望对你有一定的参考价值。
首先要纠正的一点是“log2n”不是log和2n,应该是log2和n,log2中2在log的右下脚,这是对数,高一的时候会学到
二叉树。你应该知道结点n和深度h吧
因为深度为h的二叉树的结点个数最多为2^h-1个,深度为h的
完全二叉树的结点个数最少为2^h-1个,
设n个结点的完全二叉树深度为h,则
2^h-1<=n<=2^h
取对数,得:h-1<=log2n<h
log2n只是求二叉树的深度或者结点,在实际写程序中很少用到,所以不需要深度研究. 参考技术A 可用数学归纳法。
当n=1=2^1-1时显然。
假设当n<=2^k-1时具有n个结点的完全二叉树的深度为「log2n」+1,则
当n=2^k(以及2^k+1,...,2^(k+1)-1)时,由归纳假设知前2^k-1个结点构成深度为「log2n」+1的树,再由完全二叉树的定义知剩余的1(或2,...,2^k)个结点均填在第「log2n」+2层上(作为“叶子”),故深度刚好增加了1。
故n<=2^(k+1)-1时命题成立。证毕。
(首先最好能先从直观上理解:完全二叉树中:
第1层有1个结点;
第2层有2个结点;
第3层有4个结点;
……
第k层有2^(k-1)个结点;(前k层共有(2^k)-1个结点,故前面深度刚好是「log2(2^k-1)」+1=k-1+1=k)
第k+1层是剩余的结点。
)
二叉树_顺序存储
参考技术A 满二叉树 (Full Binary Tree)
所有分支结点都有存在左子树和右子树,并且所有叶子结点都在同一层上。
完全二叉树 (Complete Binary Tree)
如果一棵具有n个结点的二叉树与满二叉树的前n个结点的结构相同,则称这棵二叉树为完全二叉树。
重要性质 :
对于一棵有n个结点的 完全二叉树 的结点按照从上至下和从左至右的顺序对所有结点从零开始到 n-1 进行顺序编号,则对于序号为i的结点(0≤i≤n),有:
(1)如果 i=0,则结点i是二叉树的根;如果i>0,则其 双亲 是结点 (i-1)/2 (整除)。
(2)如果2i+1≥n,则结点i无左孩子;否则,其 左孩子 是结点 2i+1 。
(3)如果2i+2≥n,则结点i无右孩子;否则,其 右孩子 是结点 2i+2 。
根据上面两点,得到二叉树顺序存储的实现:
定义:
获取双亲节点下标:
左子节点下标:
右子节点下标:
主函数测试:
总结:
1、对于完全二叉树或接近于完全的二叉树,用顺序存储可以省空间简化操作;否则,都不适宜用顺序存储。
2、顺序存储结构通病:必须预先给出数组的存储空间大小MaxSize。
以上是关于关于 具有n个结点的完全二叉树的深度为「log2n」+1的证明的主要内容,如果未能解决你的问题,请参考以下文章