计算二叉树叶子节点的数目

简介: 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53468024 二叉树采用链式储存结构,设计算法计算一颗给定的二叉树中叶子节点的数目使用递归创建并初始化二叉树。
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53468024

二叉树采用链式储存结构,设计算法计算一颗给定的二叉树中叶子节点的数目

  1. 使用递归创建并初始化二叉树。当输入的数据不为“#”时,将该元素视为一个有效的元素,否则置为null。每次递归返回当前位置的子树。

  2. 计算二叉树的所有叶子节点的数量。当一个节点的左孩子和右孩子都为空时。他是叶子节点。使用递归如果能找到就返回1,如果节点为NULL返回0,否则返回count(t->lchild)+ count(t->rchild)

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

typedef struct node{
    char data ;
    struct node * lchild;
    struct node * rchild;
}BiTree;

BiTree * CreatTree();
int Count(BiTree * );
void Preorder(BiTree *);

int main(){
    BiTree * top = NULL;
    top = CreatTree();
    printf("遍历结果: ");
    Preorder(top);
    putchar('\n');
    printf("叶子节点的个数: %d\n",Count(top));

    system("pause");
    return 0;
}

 BiTree * CreatTree(){

    BiTree *t;
    char ch ;
    ch = getchar();
    if (ch != '#'){
            t = (BiTree *)malloc(sizeof(BiTree));
            t ->data = ch ;
            t->lchild = CreatTree();
            t->rchild = CreatTree();
        }
        else{
            t=NULL;
        }
        return t;
}
int Count(BiTree * top){
    if(top == NULL){
        return 0;
    }
    else if ((top->lchild==NULL) && (top->rchild==NULL)){
        return 1;
    }
    else{
        return Count(top->lchild)+Count(top->rchild);
    }
}

void Preorder(BiTree * top ){
    if(top != NULL){
        printf("%c ",top->data);
        Preorder(top->lchild);
        Preorder(top->rchild);
    }
}

完全二叉树

一般二叉树

相关文章
|
7月前
|
算法 C语言
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【上】
文章目录 一、二叉数的结构体 二、构建二叉树,供后续测试使用 三、二叉树销毁 四、构建节点 五、二叉树的高度: 1.代码: 2.测试结果: 二叉树节点个数 1.代码: 2.测试结果:
|
7月前
|
算法 DataX C语言
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【下】
六、二叉树叶子节点个数 1.代码: 2.测试结果: 七、二叉树第k层节点个数 1.代码: 2.测试结果: 八、二叉树查找值为x的节点 1.代码: 2.测试结果: 九、判断二叉树是否是完全二叉树 1.代码: 2.测试结果: 十、补充:队列代码 Queue.h Queue.c
|
4月前
leetcode-129:求根节点到叶节点数字之和
leetcode-129:求根节点到叶节点数字之和
21 0
|
6月前
|
C++
C++求根节点到叶子节点数字之和
C++求根节点到叶子节点数字之和
计算左子树规模(结点个数),找出树的根结点
简单的计算公式教你找出左子树到底有多少个娃,也会与你一起寻找根结点,快来看看呀
计算左子树规模(结点个数),找出树的根结点
|
10月前
|
算法
【数据结构与算法】二叉树的深度,节点数,第k层的节点数,遍历,二叉树叶节点的个数
【数据结构与算法】二叉树的深度,节点数,第k层的节点数,遍历,二叉树叶节点的个数
123 0
|
10月前
|
数据安全/隐私保护
列出叶节点 (二叉树的建立和BFS)
列出叶节点 (二叉树的建立和BFS)
63 0
|
11月前
|
Python
Python实现统计二叉树叶子结点个数
Python实现统计二叉树叶子结点个数
143 0
|
12月前
二叉树的前中后序遍历以及求深度、叶子节点和二叉树的重建
二叉树的前中后序遍历以及求深度、叶子节点和二叉树的重建
44 0
leetcode 129 求根节点到叶节点数字之和
leetcode 129 求根节点到叶节点数字之和
55 0