ZBLOG

以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数。 函数接口定义: void creat(BiTree &Tree)//创建二叉树 int countleaf(BiTree Tree)//叶子结点计数 其中 Tree 是指向二叉树根节点的指针。 裁判测试程序样例: #include #include #define len sizeof(struct BiTNode ) typedef struct BiTNode { char d...

#include<stdio.h>
#include<malloc.h>
#define len sizeof(struct BiTNode )

typedef struct BiTNode
{
    char data;  //数据域
    struct BiTNode *lchild;  //左孩子指针
    struct BiTNode *rchild;  //右孩子指针
}BiTNode,*BiTree;

void creat(BiTree &Tree); // 构建二叉树
int countleaf(BiTree Tree); // 求叶子结点个数

int main()
{
    BiTree Tree;
    creat(Tree); // 创建二叉树
    printf("%d\n", countleaf(Tree)); // 输出叶子节点个数
    return 0;
}

// 创建二叉树函数实现
void creat(BiTree &Tree)
{
    char ch;
    scanf("%c", &ch);
    
    if (ch == '#') {
        Tree = NULL;
    } else {
        Tree = (BiTNode*)malloc(len);
        Tree->data = ch;
        
        creat(Tree->lchild);
        creat(Tree->rchild);
    }
}

// 求叶子结点个数函数实现
int countleaf(BiTree Tree)
{
    if (Tree == NULL) {
        return 0;
    } else if (Tree->lchild == NULL && Tree->rchild == NULL) {
        return 1;
    } else {
        return countleaf(Tree->lchild) + countleaf(Tree->rchild);
    }
}

在这段代码中,我们通过递归的方式遍历二叉树,当节点为NULL时,表示当前节点为空;当节点的左右孩子都为空时,表示当前节点是叶子节点。通过递归计算左右子树的叶子结点个数,最终得到整棵二叉树的叶子结点个数。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=9854

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?