求叶子节点个数

简介: 求叶子节点个数
#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;
}
相关文章
|
Java 程序员 C++
Python 面向对象详解!
本文详细介绍了Python中的面向对象编程(OOP),包括类、对象、继承、封装、多态和抽象等核心概念。通过具体示例,解释了如何使用类定义对象的属性和方法,以及如何通过继承实现代码重用。文章还探讨了封装和多态的重要性,并介绍了私有属性和抽象类的使用方法。最后,总结了OOP的四大支柱:封装、抽象、继承和多态,强调了这些概念在Python编程中的应用。适合Java程序员扩展Python编程知识。
469 2
|
存储 弹性计算 数据库
阿里云权益中心,助力学生、开发者、企业用云上云无忧
阿里云权益中心支持学生、开发者和企业快速上云,提供“99计划”惠及中小企业和开发者,包括云产品试用、精选优惠和上云扶持。高校用户可通过“云工开物”计划享专属优惠。企业用户可获上云抵扣、1对1服务及成长权益。多种云产品免费试用,降低上云门槛。
阿里云权益中心,助力学生、开发者、企业用云上云无忧
|
前端开发 JavaScript Java
从前端到后端:构建全栈应用的技术路线探析
【2月更文挑战第3天】本文通过探讨前端和后端开发的基本概念和技术要点,深入剖析了构建全栈应用的技术路线。从前端的HTML、CSS和JavaScript,到后端的Java、C和数据库,我们将带您逐步了解如何将不同技术组合起来实现高效、稳定的全栈应用。
477 7
|
机器学习/深度学习 人工智能 达摩院
阿里云开发者社区 x 达摩院 x计算平台事业部 大数据 + AI向量检索专场Meetup回顾(内含讲师PPT领取)
阿里云开发者社区 x 达摩院 x计算平台事业部 大数据 + AI向量检索专场。来自,阿里巴巴、爱奇艺、Zilliz、搜狐、Jina.AI等公司的九位重量级讲师在现场分享了他们前沿的向量检索技术思考与实践沉淀总结,快来领取讲师精彩ppt!
1987 0
阿里云开发者社区 x 达摩院 x计算平台事业部 大数据 + AI向量检索专场Meetup回顾(内含讲师PPT领取)
|
微服务 数据库 持续交付
带你读《微服务架构设计模式》之一:逃离单体地狱
本书中,微服务架构的先驱、Java 开发者社区的意见领袖 Chris Richardson 收集、分类并解释了 44 个架构设计模式,这些模式用来解决诸如服务拆分、事务管理、查询和跨服务通信等难题。本书不仅仅是一个模式目录,还提供了经验驱动的建议,以帮助你设计、实现、测试和部署基于微服务的应用程序。
11331 1
|
6月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
631 8
|
5月前
|
人工智能 搜索推荐 语音技术
基于多模态交互的智能面试训练系统设计与实现
基于多模态大模型,我们打造了革命性智能面试系统“模拟面试”,融合语音识别、情感计算与知识图谱,实现全维度能力评估与个性化成长路径规划,推动人才发展进入AI新纪元。
|
5月前
|
消息中间件 编解码 Kafka
企业微信ipad协议:Silk语音流转码为PCM的实时管线设计企业微信ipad协议:Silk语音流转码为PCM的实时管线设计企业微信ipad协议:Silk语音流转码为PCM的实时管线设计企业微信ipad协议:Silk语音流转码为PCM的实时管线设计
企业微信iPad协议中,语音消息采用Silk V3编码。为实现低延迟ASR,网关需实时将流式Silk解码为PCM并推送Kafka。通过内存池缓存解码器、无锁环形队列传输、逐块分窗处理,实现零拷贝、P99延迟≤10ms。单核支持200路并发,为实时字幕与语义分析提供高效数据底座。(238字)
824 0
|
敏捷开发 存储 开发工具
版本控制系统的选择:Git与SVN的比较
【8月更文挑战第14天】Git和SVN都是优秀的版本控制系统,它们各自具有独特的优势和适用场景。在选择版本控制系统时,需要根据具体的项目需求、团队特点和开发模式来综合考量。对于需要分布式团队协作、高效处理大型项目或采用敏捷开发模式的团队来说,Git是一个更好的选择。而对于传统团队、集中式开发或简单项目来说,SVN可能更加合适。无论选择哪种版本控制系统,都应该充分利用其提供的工具和功能来提高代码质量和开发效率。
|
存储 前端开发 JavaScript
在线教育网课系统源码开发指南:功能设计与技术实现深度解析
在线教育网课系统是近年来发展迅猛的教育形式的核心载体,具备用户管理、课程管理、教学互动、学习评估等功能。本文从功能和技术两方面解析其源码开发,涵盖前端(HTML5、CSS3、JavaScript等)、后端(Java、Python等)、流媒体及云计算技术,并强调安全性、稳定性和用户体验的重要性。

热门文章

最新文章