-
对于任何一棵非空二叉树,如果叶子节点个数为 n0,度为 2 的节点个数为 n2,则有:
n0 = n2 + 1。假设度为 1 的节点个数为 n1,那么二叉树的节点总数
n = n0 + n1 + n2,二叉树的边数T = n1 + 2 * n2 = n – 1 = n0 + n1 + n2 – 1,因此n0 = n2 + 1 -
如果一棵完全二叉树有 768 个节点,求叶子节点的个数?(384)
由
n = n0 + n1 + n2和n0 = n2 + 1可得n = 2n0 + n1 – 1完全二叉树的 n1 要么为 0,要么为 1
n1为1时,
n = 2n0,n 必然是偶数。叶子节点个数n0 = n / 2,非叶子节点个数n1 + n2 = n / 2n1为0时,
n = 2n0 – 1,n 必然是奇数,叶子节点个数n0 = (n + 1) / 2,非叶子节点个数n1 + n2 = (n – 1) / 2总结:
叶子节点个数
n0 = floor( (n + 1) / 2 ) = ceiling( n / 2 )非叶子节点个数
n1 + n2 = floor( n / 2 ) = ceiling( (n – 1) / 2 )