首先要理解什么是度
度
就是这个结点连接的下一层结点的个数,二叉树里面,度只可能是0,1,2
度=0
就是说明该结点没有连接任何下一层结点,也就是个叶结点
度=1
就是只连接一个结点
度=2
就是连接2个结点,也就饱和状态
度=0的结点个数(叶结点个数)总要比度=2的结点个数多1,这是二叉树的一个特性,你可以画几个简单的二叉树看看,总是成立的。证明的方法也是使用几何归纳(induction)的方法,你先证明只有1个叶结点的,该结论成立,然后假设有N个叶结点的该结论也成立,然后利用假设和1个叶结点的情况来证明有N+1个叶结点的,结论也成立。
然后题目是一个完全的二叉树,在一个完全的二叉树里面,每一层的结点都是饱和的(度=2),只有最底层可能存在只有1个叶结点的情况,而也只有连接这个叶结点的结点度=1,也就是在完全二叉树里面,最多只有1个度=1的结点。
假设度=0的结点有N个,所以度=2的结点有N+1个,度=1的结点有0个或者1个。
N+N+1=700,N=350,余1
所以有350个叶结点,349个度=2的结点,1个度=1的结点
完全二叉树叶子结点的算法 如果一棵具有n个结点的深度为k的二叉树,它的每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应,这棵二叉树称为完全二叉树。
可以根据公式进行推导,假设n0是度为0的结点总数(即叶子结点数),n1是度为1的结点总数,n2是度为2的结点总数,由二叉树的性质可知
:n0=n2+1
,则
n=
n0+n1+n2
(其中n为完全二叉树的结点总数)
(很显然,完全二叉树的节点数只有度数为0,1,2的情况,加起来就是总度数了)
,由上述公式把n2消去得:n=
2n0+n1-1,由于完全二叉树中度为1的结点数只有两种可能0或1,由此得到n0=(n+1)/2或n0=n/2,合并成一个公式:n0=(n+1)/2
,就可根据完全二叉树的结点总数计算出叶子结点数。
所以叶节点数为
(700+1)/2=350
,注意是取整数部分的。