解决思路 如果是空树,则结点个数为0; 否则,结点个数为左子树的结点个数+右子树的结点个数再+1 int NodeCount(BiTree T){ if(T==NULL) return 0; else return NodeCount(T-lchild)+LeaveCount(T-rchild)+1;} 补充
解决思路
如果是空树,则结点个数为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);
}