考研数据结构(每日一题)
题目:计算二叉树中所有的叶子结点个数
算法思想:
递归法:F(n)=F(左叶子结点)+F(右叶子结点)
遍历(这里用先序遍历)
完整代码:
int count(BTNode *p){
int n1,n2;
if (p == NULL) //递归边界
{
return 0;
}
if (p -> lchild == NULL && p -> rchild == NULL)
{
return 1;
}
else
{
n1 = count(p -> lchild); //递归式
n2 = count(p -> rchild);
return n1 + n2;
}
}
void count(BTNode *p){
int n = 0;
if (p != NULL)
{
if (p -> lchild == NULL && p -> rchild == NULL)
{
++ n;
}
count(p -> lchild);
count(p -> rchild);
}
}