题目

description
二叉树按照二叉链表方式存储,编写程序,计算二叉树中叶子结点的数目。
input
按先序输入二叉树各结点,其中#表示取消建立子树结点。
output
输出二叉树中叶子节点的数目。
sample_input
ABD##EH###CF#I##G##
sample_output
4

思路

  1. 构建二叉树
    递归建树,由题目要求,按先序建立。
if(t!='#') {B = (BTNode*)malloc(sizeof(BTNode));/*先序*/B->data = t;B->lchild = createBTNode(B->lchild);B->rchild = createBTNode(B->rchild);return B;}else return NULL;
  1. 统计叶子结点
    依然是递归
int count(BTNode *T){int nLeft=0,nRight=0;if(T->lchild==NULL && T->rchild==NULL)return 1;    if(T->lchild)nLeft = count(T->lchild);    if(T->rchild)nRight = count(T->rchild);return nLeft+nRight;
}

代码

#include<stdio.h>
#include<stdlib.h>typedef struct BTNode{char data;struct BTNode *lchild;struct BTNode *rchild;
}BTNode;BTNode *createBTNode(BTNode *B);
int count(BTNode *T);int main(){BTNode *B;B = createBTNode(B); //构建二叉树int c = count(B); //统计叶子结点数printf("%d",c);return 0;
}BTNode *createBTNode(BTNode *B){   char t;scanf("%c",&t);if(t!='#') {B = (BTNode*)malloc(sizeof(BTNode));/*先序*/B->data = t;B->lchild = createBTNode(B->lchild);B->rchild = createBTNode(B->rchild);return B;}else return NULL;
}int count(BTNode *T){int nLeft=0,nRight=0;if(T->lchild==NULL && T->rchild==NULL){return 1;}if(T->lchild){nLeft = count(T->lchild);}if(T->rchild){nRight = count(T->rchild);}return nLeft+nRight;
}

16 计算二叉树叶子结点数目(耿 6.14)相关推荐

  1. 西工大NOJ数据结构理论——016.计算二叉树叶子结点数目(耿6.14)

    一.初级思路 拿到题之后的好习惯--先在纸上写思路: 1.构建二叉树: char* BinTreeBuilding(PBinTreeNode ptr_node,char *ptr_str){//创建二 ...

  2. C语言实现二叉树叶子结点数目

    C语言实现二叉树叶子结点数目 要实现的功能如下 完整源代码实现如下 要实现的功能如下 求二叉树,所有的叶子总数,包括左叶子,右叶子. 完整源代码实现如下 #include<stdio.h> ...

  3. 数据结构----二叉树叶子结点到根节点的高度计算

    数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

  4. 二叉树叶子结点,非叶子节点以及深度的计算

    二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && ...

  5. c语言实现求二叉树叶子结点个数

    通过递归求解二叉树叶子结点个数,关键在于递归结束条件的设置. main.c #include<stdio.h>//定义结点类型 typedef struct BINARYNODE {cha ...

  6. java语言 写一算法求其叶子数目_数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点。A. n+1B. 2n-1...

    数据结构(Java)在线作业1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树共有( )个结点.A. n+1B. 2n-1 数据结构(Java)在线作业 1. 设n为哈夫曼树的叶子结点数目,则该哈夫曼树 ...

  7. 【数据结构·考研】二叉树叶子结点的个数

    二叉树叶子结点的个数 非递归的求法,用广度优先遍历,每出队一个结点,判断它是不是叶子结点.递归的做法,先由上自下遍历,等遍历到叶子处再逐层返回左右子树的叶子结点总和,最后得到整棵树的叶子结点数. 那么 ...

  8. 数据结构用递归算法计算二叉树中叶子结点数目的思想c语言程序,编写递归算法计算二叉树中叶子结点的数目。.doc...

    编写递归算法计算二叉树中叶子结点的数目. 学院名称专业班级实验成绩学生姓名学号实验日期课程名称数据结构实验题目2 树一.实验目的与要求 Cfree 三.实验内容和原理 [问题描述] [输入] &quo ...

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

    版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/twilight_karl/article/details/53468024 二叉树采用链式储存结构,设计算 ...

  10. 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)

    以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...

最新文章

  1. Lintcode 167. 链表求和 221. 链表求和 II 题解
  2. LAMP 2.2 Apache配置静态缓存
  3. EditThisCookie使用
  4. 用cookie实现叶卡的记忆功能
  5. 并发说明:如何构建多线程iOS应用
  6. RasbbitMQ 交换机、路由键与队列绑定
  7. [转载] python classmethod存在的意义_@classmethod和@staticmethod对初学者的意义?
  8. Style transfer系列论文之——Image Style Transfer Using Convolutional Neural Networks,CVPR, 2016
  9. 2015到3020计算机参考文献,2015版参考文献著录规则新变
  10. 联想智能云教室安win7_联想智能云教室云部署.PDF
  11. 神一样的产品经理——基于移动与互联网产品实践
  12. day04-selenium滚动和常见反爬
  13. 案例分析:互联网营销和传统营销的区别
  14. 爬取煎蛋网图片的一种思路
  15. 硕士毕业论文讨论部分怎么写啊?
  16. android 黑白棋源码,黑白棋源代码
  17. 部署yanagishima纪实
  18. 64匹马8个跑道选出最快的4匹马,最快需要几次比赛
  19. 《PTA——拼题A》之第1016题
  20. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(4)线性神经网络(暂停)

热门文章

  1. 刷脸信息采集坚持用户授权最小够用的原则
  2. Code::Blocks下载及其汉化教程
  3. cass等距离等分线段的命令键_CAD定距等分与定数等分使用技巧 - CAD自学网
  4. html圆圈里面有歌词,html5+js带滚动歌词的音乐播放器(同时支持列表,json) | 小灰灰博客...
  5. 音乐播放器 歌词同步滚动功能实现
  6. 百度Web生态开花结果:Lavas等多项新技术帮助开发者效率提升
  7. matlab pt站下载,SDPT3-4.0 求解最优化问题里的半定规 (SDP)经典并且十分有效的MATLAB程序包 244万源代码下载- www.pudn.com...
  8. 欧陆词典导入词典库(自定义英文词典)
  9. dbv mysql_mysql数据库版本控制dbv使用
  10. 希尔密码加解密(Python)