Listening to you 2021-05-14 07:54 采纳率: 25%
浏览 223
已采纳

计算二叉树的叶子数C语言实现

本题是计算二叉树中叶子结点的个数。

函数接口定义:

在这里描述函数接口。例如:
int num (Bptr p);

裁判测试程序样例:

#include <stdio.h>
#include <malloc.h>
typedef struct node
{
    int data;
    struct node *Lson,*Rson;
}Bnode,*Bptr;

int num (Bptr p);

Bptr creat()
{
    Bptr p;
    int x;
    scanf("%d",&x);
    if(x==0)
        return NULL;
    p=(Bptr)malloc(sizeof(Bnode));
    p->data=x;
    p->Lson=creat();
    p->Rson=creat();
    return p;
}

int main()
{
  Bptr root;    
    int k;    
    root=creat();
  k=num(root);
  printf("%d\n", k);
  return 0;

}

/* 请在这里填写答案 */

输入样例:

3 4 1 0 0 0 2 0 0

输出样例:

2
  • 写回答

3条回答 默认 最新

  • 爱晚乏客游 2021-05-14 09:21
    关注
    int num(Bptr p) {
    	int count = 0;
    	if (!p->Lson && !p->Rson ) 
    		return 1;
    	if (p->Lson)
    		count+= num(p->Lson);
    	if(p->Rson)
    		count+= num(p->Rson);
    	return count;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?