完全二叉树的叶子结点个数

大小为 N 的完全二叉树的叶子结点个数为 N-[N/2]。

令 Sy(N) 表示大小为 N 的完全二叉树的叶子结点个数,要证该命题,即证 Sy(N)=N-[N/2]。

大小为 2 的完全二叉树的叶子结点个数 Sy(2)=1,N-[N/2]=2-[2/2]=1,命题成立。另不难知道大小为 0 或 1 的完全二叉树满足命题。

假设命题在 N=M 时成立,即大小为 M 的完全二叉树的叶子结点个数 Sy(N)=M-[M/2],那么当 N=M+1 时,若:

  1. M 为偶数(度为 1 的结点个数为 1),那么大小为 M 的完全二叉树的最后一个结点没有兄弟结点,则大小为 M+1 的完全二叉树的叶子结点个数为大小为 M 的完全二叉树的叶子结点个数加一,即 Sy(M+1)=Sy(M)+1=M-[M/2]+1,而 M 为偶数,故 [M/2]=[(M+1)/2] 进而 M-[M/2]+1=M+1-[(M+1)/2],故命题在 N=M+1 时成立;

  2. M 为奇数(度为 1 的结点个数为 0),那么大小为 M 的完全二叉树的最后一个结点有兄弟结点,则大小为 M+1 的完全二叉树的叶子结点个数与大小为 M 的完全二叉树的叶子结点个数相等,即 Sy(M+1)=Sy(M)=M-[M/2],而 M 为奇数,故 [(M+1)/2]=[M/2]+1 进而 M-[M/2]=M+1-[(M+1)/2],故命题在 N=M+1 时成立。

另:

  • 当 N 为偶数时,N-[N/2]=N-N/2=N/2=[(N+1)/2];

  • 当 N 为奇数时 N-[N/2]=N+1-[(N+1)/2]=N+1-(N+1)/2=(N+1)/2=[(N+1)/2]。

故原命题也可写成:大小为 N 的完全二叉树的叶子结点个数为 [(N+1)/2]。


另一种方法:

二叉树的度指该节点引出的边数(节点下面的边),也即节点的子节点树。那么二叉树有 3 种度:

  • n0:度为 0,即为叶子节点数量。
  • n1:度为 1,即为只有左子树或者右子树的节点数量,对于完全二叉树,只可能存在一种情况,节点数为奇数时有一个节点只有一个左子树,所以 n1 = 0 or 1。
  • n2:度为 2,即有左右节点的节点数量。

由二叉树的性质有 n0 = n2 + 1

证明:

  • 由于 N = n0 + n1 + n2,而 n0 = n2 + 1,所以 N = 2n0 + n1 - 1,n0=(N+1-n1)/2
  • 对于完全二叉树,如果 N 为奇数,说明不存在只有左子节点的节点,n1 = 0, n0 = (N+1)/2;如果 N 为偶数,说明存在 1 个只有左子节点的节点,n1 = 1, n0 = N/2。可以合并为 n0 = [(N+1)/2]。

ref:完全二叉树的叶子节点数完全二叉树叶子节点的个数

posted @ 2022-03-29 10:08  Higurashi-kagome  阅读(1476)  评论(0编辑  收藏  举报