博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算二叉树叶子节点的数目
阅读量:6199 次
发布时间:2019-06-21

本文共 1367 字,大约阅读时间需要 4 分钟。

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/twilight_karl/article/details/53468024

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

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

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

#include
#include
#include
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); }}

完全二叉树

一般二叉树

你可能感兴趣的文章
JUC——线程池技术相关内容
查看>>
我的友情链接
查看>>
shell编程——if语句
查看>>
Linux上文件的特殊权限SUID,SGID,SBIT详解
查看>>
js实例学习 -- onload标签
查看>>
cisco AP1131 配置DHCP自动获取
查看>>
ERP对部门经理的好处有哪些
查看>>
IT十八掌作业_java基础第四天_复习运算符、进制转化和数组
查看>>
移动端自定义美观的滑动条
查看>>
Spring AOP
查看>>
100层跳板游戏源码项目
查看>>
模拟彩票中奖(没弄明白)
查看>>
「Rancher社区技术支持计划」全面启动
查看>>
1.c#-Convert 类型转换
查看>>
修改this指向(bind、call 和 apply)
查看>>
使用硬盘,安装双系统,Win7+CentOS
查看>>
Linux-php-fpm慢执行日志
查看>>
docker部署私有仓库
查看>>
67.zabbix添加自定义监控项目、配置邮件告警、测试告警
查看>>
2.建立git仓库&&代码提交
查看>>