二叉树练习——建树+叶子数+深度
来源:互联网 发布:淘宝电棍 编辑:程序博客网 时间:2024/05/16 12:09
数据结构实验之二叉树的建立与遍历
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
Input
输入一个长度小于50个字符的字符串。
Output
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
Example Input
abc,,de,g,,f,,,
Example Output
cbegdfacgefdba35
Hint
Author
ma6174
代码:
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;typedef struct Tree{ char d; struct Tree *l,*r;}Tree;char s[10005];int lea,de;void Creat(Tree *&T){ char x; cin>>x; if(x==','){ T=NULL; return; } else{ T=new Tree; T->d=x; Creat(T->l); Creat(T->r); }}void order(Tree *T){ if(T==NULL) return; order(T->l); printf("%c",T->d); order(T->r);}void post(Tree *T){ if(T==NULL) return; post(T->l); post(T->r); printf("%c",T->d);}void leave(Tree *T){ if(T){ if(!T->l&&!T->r){ lea++; } leave(T->l); leave(T->r); }}int deep(Tree *T){ int ll,rr,m; if(T==NULL) return 0; else{ ll=deep(T->l); rr=deep(T->r); m=ll>rr?ll+1:rr+1; } return m;}int main(){ lea=0,de=0; Tree *T; Creat(T); order(T); printf("\n"); post(T); printf("\n"); leave(T); de=deep(T); printf("%d\n%d\n",lea,de); return 0;}
0 0
- 二叉树练习——建树+叶子数+深度
- 二叉树系列(建树,前序,中序,后序,中序非递归,深度,叶子数,节点数)
- 二叉树——已知二叉树先序,建树,并输出中序、后序,并求树叶数和深度
- 数据结构——二叉树遍历、深度、叶子节点数计算
- 二叉树的创建、遍历、深度、叶子节点数
- 【算法导论】求二叉树的叶子数和深度
- 求二叉树的深度、宽度和叶子结点数
- 6-4 二叉树求深度和叶子数
- 二叉树求深度和叶子数(20 分)
- PTA二叉树求深度和叶子数
- 二叉树的深度和叶子节点数
- 二叉树求叶子数
- 二叉树——不建树遍历
- 基本数据结构——二叉树的建立,遍历,求叶子节点,深度计算
- 二叉树(二)——遍历、深度统计、叶子结点统计、结点统计
- 二叉树 (求叶子结点&深度)
- 二叉树(求深度、叶子结点)
- 二叉树的操作:创建、遍历、求树的深度、叶子结点数
- 使用 python requests 模拟登陆
- MongoDB regular expression with indexed field
- yii2 widget实现筛选记录
- android模拟器,Genymotion问题:Unable to start the virtual device.
- unity 打包完成之后 (黑色控制台提示)
- 二叉树练习——建树+叶子数+深度
- 渗透工具之nmap使用
- Java回顾之序列化
- hdu1255(线段树求面积交)
- Perl语言入门(06+ 正则表达式)——小骆驼书正则表达式相关章节笔记
- ES 5.0.2报错记录
- 【数据结构1】顺序表
- Android设计模式——接口隔离原则
- 新人常识普及:我们为什么必须会git和maven