二叉树的基本性质及证明

2022-09-03 17:21:55 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

性质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的结点无右孩子。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/138393.html原文链接:https://javaforall.cn

0 人点赞