非递归(易理解)
int Level(BiTree T)
{
int n=0 //num统计度为1的结点个数
if(T){
QueueInit(Q);QueueIn(Q,T); //Q是以二叉树结点指针为元素的队列
while(!QueueEmpty(Q))
{
p=QueueOut(Q); //出队,访问结点
if(p->lchild && !p->rchild || !p->lchild && p->rchild)
n++;
if(p->lchild) QueueIn(Q,p->lchild); //非空左孩子入队
if(p->rchild) QueueIn(Q,p->rchild); //非空右孩子入队
}
}
return n;
}
递归
int NodeCount (BiTree T)
{
if(T==NULL)
return 0;
else if(!T->lchild&&T->rchild || T->lchild&&!T->rchild)
return NodeCount(T->lchild)+NodeCount(T->rchild)+1;
else return NodeCount(T->lchild)+NodeCount(T->rchild);
}