数据结构实验之二叉树的建立与遍历
来源:互联网 发布:java程序设计第十版pdf 编辑:程序博客网 时间:2024/05/17 08:57
数据结构实验之二叉树的建立与遍历
Time Limit: 1000MS Memory limit: 65536K
题目描述
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
输入
输入一个长度小于50个字符的字符串。
输出
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfa
cgefdba
3
5
提示
首先由给出的先序序列构建二叉树,在进行中序查找和后序查找,二叉树深度及最大二叉树深度,可以由一个变量记录,不断和最大值作比较,最后得出最大值。
二叉树的叶子表示一个节点既没有左子树也没有右子树,遍历二叉树,查找符合要求的节点即可。
#include <iostream>#include <stdio.h>using namespace std;typedef struct jied{ char date; struct jied *lchild,*rchild;} jied,*p;int d = 0,ma = 0,num = 0;void jianshu (p &T){ char ch; scanf("%c",&ch); if(ch == ',') T = NULL; else if(ch == '\n') { return ; } else { T = new jied; T -> date = ch; jianshu(T -> lchild); jianshu(T -> rchild); }}void zhongxu(p T){ if(T) { zhongxu(T -> lchild); printf("%c",T -> date); zhongxu(T -> rchild); }}void houxu(p T,int d){ if(T) { houxu(T -> lchild,d+1); houxu(T -> rchild,d+1); printf("%c",T -> date); if(ma<d) ma = d; }}void y(p T){ if(T!=NULL) { if(T -> lchild == NULL && T -> rchild == NULL) num++; else { y(T -> lchild); y(T -> rchild); } }}int main(){ p T; jianshu(T); zhongxu(T); printf("\n"); houxu(T,ma); printf("\n"); y(T); printf("%d\n",num); printf("%d\n",ma + 1); return 0;}
0 0
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- sdutoj2136 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历
- 数据结构实验之二叉树的建立与遍历 SDUT
- junit的使用
- FatMouse' Trade
- 应用 Android SDK 局域网上网
- 【RE】regular expression
- Nand flash uboot 命令详解
- 数据结构实验之二叉树的建立与遍历
- 东软睿道实训日记—第二天
- 润乾——显示格式
- UML之用例图
- ARC基础
- 开源项目:Android-PullToRefresh
- android开发中经常遇到的问题汇总
- 关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
- mina源码分析五(转)