31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告
励志用尽量少的代码做高效的表达。
以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数。
输入格式:
输入二叉树的先序序列。
提示:一棵二叉树的先序序列是一个字符串,若字符是‘#’,表示该二叉树是空树,否则该字符是相应结点的数据元素。
输出格式:
输出有两行:
第一行是二叉树的中序遍历序列;
第二行是二叉树的叶子结点个数。
输入样例:
ABC##DE#G##F###
输出样例:
CBEGDFA
3
分析:
由于本题较基础,因此思路从解题转为优化。
本题考查树的中序遍历+求叶子节点个数。
值得注意的是:一般的思维是:中序遍历建一个函数,求叶子结点建一个函数。但更优化的解法是:将两个函数合一,可以减少一次树的遍历,提高效率。
代码:(去掉3行注释为31行)
#include<bits/stdc++.h>
using namespace std;
int sum = 0;
//1、声明
typedef struct BiTNode { char x;struct BiTNode* l, *r;
}*BiTree;
//2、创建树
BiTree Create(BiTree T) { char ch = getchar(); //赋值 if(ch == '#') T = NULL; //遇#则置空 else {T = new BiTNode();T->x = ch; //赋值 T->l = Create(T->l); //递归赋值 T->r = Create(T->r);} return T;
}
//3、中序遍历+求叶子
void Mid(BiTree T) { if(T) { if(T->l == NULL && T->r == NULL) sum++; if(T->l) Mid(T->l); //中序遍历就是把输出放在中间。cout << T->x;if(T->r) Mid(T->r);}
}
int main() {BiTree T;T = Create(T);Mid(T); cout << endl << sum;return 0;
}
择苦而安,择做而乐。虚拟现实远远比不上真实精彩之万一。
31行代码AC——PTA 求二叉树的叶子结点个数 (20分)——解题报告相关推荐
- 求二叉树的叶子结点个数
7-5 求二叉树的叶子结点个数 (20 分) 以二叉链表作为二叉树的存储结构,求二叉树的叶子结点个数. 输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示 ...
- 求二叉树的叶子结点个数(C语言)
输入格式: 输入二叉树的先序序列. 提示:一棵二叉树的先序序列是一个字符串,若字符是'#',表示该二叉树是空树,否则该字符是相应结点的数据元素. 输出格式: 输出有两行: 第一行是二叉树的中序遍历序列 ...
- 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告
励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-11988 题目大意: 输入一个字符串,输出在原本应该是怎么样的? 具体方法是: 若读取到'[', 则执行Home键:将光标移到行首. 若读 ...
- 28行代码AC——习题3-12 浮点数(UVA 11809 - Floating-Point Numbers)——解题报告
励志用少的代码做高效的表达 题目(提交)链接→UVA-11809 算是个数学题吧,虽然在AOAPC上面给放到象征水题的第三章里面了. 这个题基本就是帮着你复习了一遍浮点数的存储方式了.浮点数在计算机里 ...
- 比紫书优化,14行代码AC——例题 5-7 丑数(Ugly Numbers,UVa 136)——解题报告
题意: 丑数是一些因子只有2,3,5的数.数列1,2,3,4,5,6,8,9,10,12,15--写出了从小到大的前11个丑数,1属于丑数.现在请你编写程序,找出第1500个丑数是什么. 没有输入 输 ...
- 11行代码AC——习题2-4 子序列的和(subsequence)——解题报告
励志用尽量少的代码做高效的表达. 题目描述: 输入两个正整数n<m<106,输出1/(n²)+1/((n+1)²)+--+1/(m²),保留5位小数.输入包含多组数据,结束标记为n=m=0 ...
- 二叉树的进阶操作---(求二叉树中所有结点个数,求叶子结点个数,求第k层结点个数;在二叉树中查找某一结点;层序遍历;判断是否为完全二叉树)
typedef struct TreeNode {struct TreeNode *left;struct TreeNode *right;char val; }TreeNode;typedef st ...
- Java创建二叉树,并使用递归算法求二叉树中叶子结点的数目
问题描述 创建二叉树,并使用递归算法求二叉树中叶子结点的数目 输入 输入一个用'.'来标明空子树的先根遍历序列,如ABD-EH-CF.I-G- 输出 叶子结点的个数 存储结构 二叉树 算法的基本思想 ...
- 求二叉树b的结点个数、叶子结点个数
#include"tree.cpp" //包含了二叉树的基本算法/*-------- 求二叉树b的结点个数.叶子结点个数 ---------*///求二叉树b的结点个数 int N ...
最新文章
- pthred()多线程计算派
- 【深度学习】深度神经网络后处理之全连接CRFs(DenseCRF)
- Raevo最近疯狂迷上了WP
- java String部分源码解析
- php决策管理,报表管理与数据分析:为系统未来发展规划提供决策依据,有效避免IT管理与投资的盲目??...
- [转载] Python-Strings
- BPM调用有webservice接口的.NET插件
- ghost还原固态硬盘_固态硬盘到底能不能使用Ghost软件?终于说明白了
- eclipse汉化完成常见问题的解决方案
- xp计算机无法正常启动,Windows XP电脑开机出错无法正常启动的解决方法
- noob_Noob选择JavaScript框架指南
- 解决最近github网页无法打开问题
- 专访中科创达软件工程师龙辉:Idea赋予实践的演进之路
- 页面布局常用,让子级div排排坐
- 2021年福建省安全员B证(项目负责人)考试试题及福建省安全员B证(项目负责人)作业模拟考试
- 心理学实验必备 | 情绪刺激材料推荐(含图片和声音)
- IE打开报错,提示该内存不能为read的解决办法!
- k-PPD-ERT实现
- 计算机商务英语的用途,计算机在金融业中的应用
- 什么是数字化?为什么需要数字化?数字化的未来?