解决思路

如果是空树,则结点个数为0;

否则,结点个数为左子树的结点个数+右子树的结点个数再+1

int NodeCount(BiTree T)
{
  if(T==NULL)
    return 0;
  else
    return NodeCount(T->lchild)+LeaveCount(T->rchild)+1;
}

补充算法——计算二叉树的叶子结点数

如果是空树,则结点个数为0;

否则,结点个数为左子树叶子结点个数+右子树的叶子结点个数

为什么求叶子结点时不需要加1呢,求叶子结点,根结点既然有左子树和右子树,那它肯定就不是叶子结点,所以就不需要加1。

int LeafCount(BiTree T)
{
  if(T==NULL)
    return 0;
  if(T->lchild==NULL&&T->rchild==NULL)
    return 1
  else
    return LeafCount(T->lchild)+LeafCount(T->rchild);
}