大家好,又见面了,我是你们的朋友全栈君。
性质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的结点无右孩子。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/138393.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...