设高度为 h h h的完全二叉树的最后一层结点个数为 x ∈ N + x\in \N^+ x∈N+,显然其结点个数为 N 总 = 2 h − 1 + x − 1 N_{总}=2^{h-1}+x-1 N总=2h−1+x−1。
接下来分类讨论。
①当 x = 2 n − 1 x=2n-1 x=2n−1时 ( n = 1 , 2 , 3 , ⋯ ) (n=1,2,3,\cdots) (n=1,2,3,⋯):
叶子节点的个数为
N
叶
=
2
h
−
2
−
x
−
1
2
+
x
−
1
=
2
h
−
2
+
x
−
1
2
N_{叶}=2^{h-2}-\frac{x-1}{2}+x-1=2^{h-2}+\frac{x-1}{2}
N叶=2h−2−2x−1+x−1=2h−2+2x−1故非叶子结点的个数为
N
非叶
=
2
h
−
1
+
x
−
1
−
(
2
h
−
2
+
x
−
1
2
)
=
2
h
−
2
+
x
−
1
2
N_{非叶}=2^{h-1}+x-1-(2^{h-2}+\frac{x-1}{2})=2^{h-2}+\frac{x-1}{2}
N非叶=2h−1+x−1−(2h−2+2x−1)=2h−2+2x−1
所以有
N
非叶
=
N
总
2
N_{非叶}=\frac{N_{总}}{2}
N非叶=2N总
②当 x = 2 n x=2n x=2n时 ( n = 1 , 2 , 3 , ⋯ ) (n=1,2,3,\cdots) (n=1,2,3,⋯):
叶子节点的个数为
N
叶
=
2
h
−
2
−
x
2
+
x
=
2
h
−
2
+
x
2
N_{叶}=2^{h-2}-\frac{x}{2}+x=2^{h-2}+\frac{x}{2}
N叶=2h−2−2x+x=2h−2+2x故非叶子结点的个数为
N
非叶
=
2
h
−
1
+
x
−
1
−
(
2
h
−
2
+
x
2
)
=
2
h
−
2
+
x
2
−
1
N_{非叶}=2^{h-1}+x-1-(2^{h-2}+\frac{x}{2})=2^{h-2}+\frac{x}{2}-1
N非叶=2h−1+x−1−(2h−2+2x)=2h−2+2x−1
所以有
N
非叶
=
N
总
−
1
2
N_{非叶}=\frac{N_{总}-1}{2}
N非叶=2N总−1
注意到此时
N
总
N_{总}
N总为奇数,从而
N
非叶
=
N
总
−
1
2
=
⌊
N
总
2
⌋
N_{非叶}=\frac{N_{总}-1}{2}=\lfloor\frac{N_{总}}{2}\rfloor
N非叶=2N总−1=⌊2N总⌋
综上,对于任意的
x
∈
N
+
x\in \N^+
x∈N+均有
N
非叶
=
⌊
N
总
2
⌋
N_{非叶}=\lfloor\frac{N_{总}}{2}\rfloor
N非叶=⌊2N总⌋
故对于从1开始的下标,完全二叉树的最后一个非叶子结点位于其层序遍历的第
⌊
N
总
/
2
⌋
\lfloor N_{总}/2\rfloor
⌊N总/2⌋个位置。