二叉树的性质(一)

191 阅读1分钟
  • 对于任何一棵非空二叉树,如果叶子节点个数为 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 + n2n0 = n2 + 1 可得 n = 2n0 + n1 – 1

    完全二叉树的 n1 要么为 0,要么为 1

    n1为1时,n = 2n0,n 必然是偶数。叶子节点个数 n0 = n / 2,非叶子节点个数 n1 + n2 = n / 2

    n1为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 )