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

简介: 版权声明:本文为博主原创文章,转载请注明出处。 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月前
|
Java C++ Python
leetcode-222:完全二叉树的节点个数
leetcode-222:完全二叉树的节点个数
35 0
|
7月前
|
存储
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
15_完全二叉树的节点个数
15_完全二叉树的节点个数
|
6月前
【树 - 平衡二叉树(AVL)】F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量
【树 - 平衡二叉树(AVL)】F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量
计算左子树规模(结点个数),找出树的根结点
简单的计算公式教你找出左子树到底有多少个娃,也会与你一起寻找根结点,快来看看呀
计算左子树规模(结点个数),找出树的根结点
|
7月前
|
算法
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
二叉树的结点个数、叶子结点个数的代码实现<分治算法>
C++求根节点到叶子节点数字之和
C++求根节点到叶子节点数字之和
|
算法
【数据结构与算法】二叉树的深度,节点数,第k层的节点数,遍历,二叉树叶节点的个数
【数据结构与算法】二叉树的深度,节点数,第k层的节点数,遍历,二叉树叶节点的个数
293 0
leetcode 222 完全二叉树的节点个数
leetcode 222 完全二叉树的节点个数
62 0
leetcode 222 完全二叉树的节点个数
二叉树的层序遍历、二叉树叶节点输出算法、求二叉树的高度、层序创建一棵二叉树
二叉树的层序遍历、二叉树叶节点输出算法、求二叉树的高度、层序创建一棵二叉树