已知一棵完全二叉树的节点数n,求叶节点数

题目如题
假设完全二叉树中,度为0的节点(即叶节点)数目为n0,度为1的节点数为n1,度为2的数目为n2,总数为n
首先我们得知道两个公式

结点总数满足:
n = n0 + n1 + n2

出度、入度,即分支数满足:
n - 1 = 0*n0 + 1*n1 + 2*n2

n0 = n2 + 1 = (n-1 - n1)/2 + 1
但我们还是不能求出叶子节点数,我们还少了个条件,

  • 如果节点总数是偶数,则n1 = 1

  • 如果节点总数是奇数,则n1 = 0
    由此

n0 = (n-1 - (n1+1) % 2) / 2 + 1
假设n = 2019
n0 = (2018 - 0)/2 + 1= 1010

你可能感兴趣的:(算法,数据结构)