求叶子节点个数

简介: 求叶子节点个数
#include<stdio.h>
#include<stdlib.h>
typedef struct Bitnode
{
  char data;
  struct Bitnode* lchild, * rchild;
}Bitnode, * Bitree;
void PreOrd(Bitree T)
{
  if (T == NULL)
    return;
  printf("%c", T->data);
  PreOrd(T->lchild);
  PreOrd(T->rchild);
}
void InOrderTraverse(Bitree T)//二叉树的中序遍历
{
  if (T == NULL)
    return;
  InOrderTraverse(T->lchild);
  printf("%c", T->data);
  InOrderTraverse(T->rchild);
}
int countleaf(Bitree* T, int count)
{
  if ((*T) != NULL)
  {
    if ((*T)->lchild == NULL && (*T)->rchild == NULL)
    {
      count++;
    }
    count = countleaf(&(*T)->lchild, count);
    count = countleaf(&(*T)->rchild, count);
  }
  return count;
}
void create(Bitree* T)
{
  char ch;
  scanf_s("%c", &ch);
  if (ch == '#')
    *T = NULL;
  else {
    *T = (Bitree)malloc(sizeof(Bitnode));
    if (!*T)
      exit(0);
    (*T)->data = ch;
    create(&(*T)->lchild);
    create(&(*T)->rchild);
  }
}
int main()
{
  Bitree T;
  printf_s("输入字符串序列:\n");
  int count = 0;
  create(&T);
  printf_s("输出序列为:\n");
  InOrderTraverse(T);
  printf_s("叶子节点数为:");
  count = countleaf(&T, count);
  printf("\n%d", count);
  return 0;
}
相关文章
|
18天前
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
二叉树查找值为x的结点、树的高度、第k层结点个数的代码实现
|
8月前
【Leetcode -1171.从链表中删去总和值为零的连续节点 -1669.合并两个链表】
【Leetcode -1171.从链表中删去总和值为零的连续节点 -1669.合并两个链表】
77 0
|
8月前
|
算法 C语言
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【上】
文章目录 一、二叉数的结构体 二、构建二叉树,供后续测试使用 三、二叉树销毁 四、构建节点 五、二叉树的高度: 1.代码: 2.测试结果: 二叉树节点个数 1.代码: 2.测试结果:
|
8月前
|
算法 DataX C语言
【数据结构】二叉树的节点数,叶子数,第K层节点数,高度,查找x节点,判断是否为完全二叉树等方法【下】
六、二叉树叶子节点个数 1.代码: 2.测试结果: 七、二叉树第k层节点个数 1.代码: 2.测试结果: 八、二叉树查找值为x的节点 1.代码: 2.测试结果: 九、判断二叉树是否是完全二叉树 1.代码: 2.测试结果: 十、补充:队列代码 Queue.h Queue.c
|
7月前
|
C++
C++求根节点到叶子节点数字之和
C++求根节点到叶子节点数字之和
|
8月前
【Leetcode -2236.判断根节点是否等于子节点之和 -2331.计算布尔二叉树的值】
【Leetcode -2236.判断根节点是否等于子节点之和 -2331.计算布尔二叉树的值】
21 0
计算左子树规模(结点个数),找出树的根结点
简单的计算公式教你找出左子树到底有多少个娃,也会与你一起寻找根结点,快来看看呀
计算左子树规模(结点个数),找出树的根结点
|
11月前
|
算法
【数据结构与算法】二叉树的深度,节点数,第k层的节点数,遍历,二叉树叶节点的个数
【数据结构与算法】二叉树的深度,节点数,第k层的节点数,遍历,二叉树叶节点的个数
132 0