二叉树的基本性质及证明
2016-07-15 00:21
309 查看
性质1:一棵非空二叉树的第i层上最多有2^(i-1)个结点,(i>=1)。
性质2:一棵深度为k的二叉树中,最多具有2^k-1个结点,最少有k个结点。
性质3:对于一棵非空的二叉树,度为0的结点(即叶子结点)总比度为1的结点多一个,即叶子结点数为n0,度为2的结点数为n2,则有n0=n2+1。
证明:如果n0表示度为0(即叶子结点)的结点数,用n1表示度为1的结点数,n2表示度为2的结点数,n表示整个完全二叉树的结点总数,则有n=n0+n1+n2,根据二叉树和树的性质,可知n=n1+2xn2+1(所有结点的度数之和加1等于结点总数),根据两个等式可知n0+n1+n2=n1+2xn2+1,即n2=n0-1,也即n0=n2+1。
性质4:具有n个结点的完全二叉树深度为(log2(n))+1。
证明:根据性质2,深度为k的二叉树,最多有2^k-1个结点,且完全二叉树的定义是与同深度的满二叉树前边的编号相同,即它们的结点总数n位于k层和k-1层的满二叉树容量之间,即2^(k-1)-1< n <=2^k-1之间,或2^(k-1) <= n <2^k,两边同时取对数得,k-1<=log2(n)<k,又因层数为整数,故log2(n)=k-1,即k=log2(n)+1。
性质5:对具有n个结点的完全二叉树,如果按照从上至下和从左至右的顺序对二叉树的所有结点从1开始编号,则对于任意的序号为i的结点有:
如果i>1,那么序号为i的结点的双亲结点序号为i/2;
如果i=1,那么序号为i的结点为根节点,无双亲结点;
如果2i<=n,那么序号为i的结点的左孩子结点序号为2i;
如果2i>n,那么序号为i的结点无左孩子;
如果2i+1<=n,那么序号为i的结点右孩子序号为2i+1;
如果2i+1>n,那么序号为i的结点无右孩子。
性质2:一棵深度为k的二叉树中,最多具有2^k-1个结点,最少有k个结点。
性质3:对于一棵非空的二叉树,度为0的结点(即叶子结点)总比度为1的结点多一个,即叶子结点数为n0,度为2的结点数为n2,则有n0=n2+1。
证明:如果n0表示度为0(即叶子结点)的结点数,用n1表示度为1的结点数,n2表示度为2的结点数,n表示整个完全二叉树的结点总数,则有n=n0+n1+n2,根据二叉树和树的性质,可知n=n1+2xn2+1(所有结点的度数之和加1等于结点总数),根据两个等式可知n0+n1+n2=n1+2xn2+1,即n2=n0-1,也即n0=n2+1。
性质4:具有n个结点的完全二叉树深度为(log2(n))+1。
证明:根据性质2,深度为k的二叉树,最多有2^k-1个结点,且完全二叉树的定义是与同深度的满二叉树前边的编号相同,即它们的结点总数n位于k层和k-1层的满二叉树容量之间,即2^(k-1)-1< n <=2^k-1之间,或2^(k-1) <= n <2^k,两边同时取对数得,k-1<=log2(n)<k,又因层数为整数,故log2(n)=k-1,即k=log2(n)+1。
性质5:对具有n个结点的完全二叉树,如果按照从上至下和从左至右的顺序对二叉树的所有结点从1开始编号,则对于任意的序号为i的结点有:
如果i>1,那么序号为i的结点的双亲结点序号为i/2;
如果i=1,那么序号为i的结点为根节点,无双亲结点;
如果2i<=n,那么序号为i的结点的左孩子结点序号为2i;
如果2i>n,那么序号为i的结点无左孩子;
如果2i+1<=n,那么序号为i的结点右孩子序号为2i+1;
如果2i+1>n,那么序号为i的结点无右孩子。
相关文章推荐
- 类,权限修饰符
- Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks(DP+矩阵快速幂)
- hadoop 学习
- poi生成Excel文件【带样式和格式】
- JavaEE学习笔记之SSH—Spring(2)
- [ZigBee] 6、ZigBee基础实验——定时器3和定时器4(8 位定时器)
- java 中的 传值 与 传址
- 2016夏季练习——数论
- MTK6795刷机与启动
- 一个屌丝程序猿的人生(三十一)
- Centos6系统安装gpperfmon-cc-web监控
- react学习资料整理
- gets()
- VS2010 SP1 创建MVC3 Internet应用程序(C#)
- .net mvc 视图入门
- Python关键字参数
- javaee之sax解析和schema约束见解
- 网络安全工具库(持续更新)
- /r/n的使用说明
- PictureBox控件(图像控件)《笔记1》