数据结构实验之二叉树的建立与遍历 分类: 树 2015-06-21 11:02 8人阅读 评论(0) 收藏
2015-06-21 11:02
645 查看
数据结构实验之二叉树的建立与遍历
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
输入
输入一个长度小于50个字符的字符串。
输出
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfa
cgefdba
3
5
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
已知一个按先序序列输入的字符序列,如abc,,de,g,,f,,,(其中逗号表示空节点)。请建立二叉树并按中序和后序方式遍历二叉树,最后求出叶子节点个数和二叉树深度。
输入
输入一个长度小于50个字符的字符串。
输出
输出共有4行:
第1行输出中序遍历序列;
第2行输出后序遍历序列;
第3行输出叶子节点个数;
第4行输出二叉树深度。
示例输入
abc,,de,g,,f,,,
示例输出
cbegdfa
cgefdba
3
5
/* 建立二叉树,进行层次遍历和前,中,后序的遍历 */ #include <cstdio> #include <cmath> #include <cstring> #include <cstdlib> #include <time.h> #include <cctype> #include <queue> #include <stack> #include <map> #include <set> #include <climits> #include <string> #include <iostream> #include <algorithm> #define RR freopen("input.txt","r",stdin) #define WW freopen("output.txt","w",stdout) #define INF 0x3f3f3f3f using namespace std; const int Max=1000001; char str[110]; int top; int Sum; int Deep; struct Tree { char c; Tree *L; Tree *R; }; struct Tree* CreatTree() { Tree *p; p=new Tree; p->L=NULL; p->R=NULL; return p; } struct Tree* BuildTree(Tree *root)//建树 { if(!str[top]||str[top]==',') { return NULL; } root=CreatTree(); root->c=str[top]; top++; root->L=BuildTree(root->L); top++; root->R=BuildTree(root->R); return root; } void InOrder(Tree* root,int ans) { if(!root) { if(ans>Deep) { Deep=ans;//计算树的深度 } return ; } if(!root->L&&!root->R) { Sum++;//计算叶子节点 } InOrder(root->L,ans+1); printf("%c",root->c); InOrder(root->R,ans+1); } void PostOrder(Tree* root) { if(!root) { return ; } PostOrder(root->L); PostOrder(root->R); printf("%c",root->c); } int main() { Tree * Root; scanf("%s",str); top=0; Sum=0; Deep=0; Root=BuildTree(Root); InOrder(Root,0); cout<<endl; PostOrder(Root); cout<<endl; cout<<Sum<<endl; cout<<Deep<<endl; return 0; }
相关文章推荐
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历 分类: 树 2015-06-21 10:58 11人阅读 评论(0) 收藏
- [数据结构]八皇后(暴力,解答树,DFS回溯)
- 二叉树的三种遍历方式:递归、栈、循环 分类: C/C++ 数据结构与算法 2015-06-21 09:47 269人阅读 评论(0) 收藏
- JAVA 常用数据结构操作
- 数据结构和算法-010 数组排序 希儿排序
- [数据结构]埃及分数(暴力,解答树,迭代加深搜索)
- [数据结构]二叉树自学
- 线性表子系统
- 数据结构第三部分:树与树的表示、二叉树及其遍历、二叉搜索树、平衡二叉树、堆、哈夫曼树、集合及其运算
- 数据结构——链式队列(c++)
- 斐波那契查找(超详解)
- 数据结构——循环队列(c++)
- 数据结构——链式栈(c++)
- 第2章 算法入门
- To_review_100_1---KMP算法的整理
- 数据结构——顺序栈(c++)
- Esper入门简介:三、 对Esper底层数据结构特点分析,数据的入、出
- Redis内部数据结构详解之压缩链表(ziplist)
- 算法竞赛入门经典之stl重的常用数据结构----->set