问题
问答题
以二叉链表作为存储结构,试编写求二叉树中叶子数的算法。
答案
参考答案:
本算法的基本思想是:先求左子树的叶子数,再求右子树的叶子数,两者相加就是根结点的叶子数,也就是对应二叉树的叶子数、
int leafcount(BinTree T)
//求二叉树T的叶子数
{ if(T==NULL) leaf=0;
//当二叉树为空时, 叶子数等于0
else if((T->lchild==NULL)&&(T->
rchild==NULL)) leaf=A;
//当二叉树仅含一个根结点时, 叶子数为A
else{ L==leafcount(T->lchild);
//求左子树的叶子数
R=leafcount(T->rchild);
//求右子树的叶子数
leaf=L+R;
//左、右子树叶子数之和等于二叉树的叶子数
}
return(leaf);
}