链式二叉树的创建及遍历
来源:互联网 发布:手机淘宝怎么投诉盗图 编辑:程序博客网 时间:2024/06/04 23:06
这一题参考了http://blog.sina.com.cn/s/blog_6955a88501014nh5.html这里的代码
描述
链式二叉树的创建及遍历
树的遍历有先序遍历、中序遍历和后序遍历。先序遍历的操作定义是先访问根结点,然后访问左子树,最后访问右子树。中序遍历的操作定义是先访问左子树,然后访问根,最后访问右子树。后序遍历的操作定义是先访问左子树,然后访问右子树,最后访问根。对于采用链式存储结构的二叉树操作中,创建二叉树通常采用先序次序方式输入二叉树中的结点的值,空格表示空树。对于如下的二叉树,我们可以通过如下输入“AE-F--H--”得到( ‘-’表示空子树)。
试根据输入创建对应的链式二叉树,并输入其先序、中序和后序遍历结果。
输入
输入第一行为一个自然数n,表示用例个数
接下来为n行字符串,每行用先序方式输入的要求创建的二叉树结点,’-’表示前一结点的子树为空子树。
输出
对每个测试用例,分别用三行依次输出其先序、中序和后序遍历结果。
样例输入
1
abdh---e-i--cf-j--gk---
abdh---e-i--cf-j--gk---
样例输出
abdheicfjgk
hdbeiafjckg
hdiebjfkgca
hdbeiafjckg
hdiebjfkgca
#include <iostream>using namespace std;char a;typedef char Elemtype;typedef struct Bitree{Elemtype data;struct Bitree*lchild, *rchild;}Bitree;Bitree *GreatBitree(Bitree *t)//这个地方看不懂啊,为什么要在前面在*{//此函数为根据输入创建二叉树,注意输入应按先序遍历顺序cin>>a;if(a=='-')t=NULL;else{t = new Bitree;t->data = a;t->lchild=GreatBitree(t->lchild);t->rchild=GreatBitree(t->rchild);}return t;}void Firstorder(Bitree *t)//先序遍历输出{if(t){cout<<t->data;Firstorder(t->lchild);Firstorder(t->rchild);}}void Midorder(Bitree *t)//中序遍历输出{if(t){Midorder(t->lchild);cout<<t->data;Midorder(t->rchild);}}void Lastorder(Bitree *t)//后序遍历输出{if(t){Lastorder(t->lchild);Lastorder(t->rchild);cout<<t->data;}}int main(){int nl;cin>>nl;while(nl--){Bitree *t;t = new Bitree;getchar();t=GreatBitree(t);Firstorder(t);cout<<endl;Midorder(t);cout<<endl;Lastorder(t);cout<<endl;}return 0;}
- 链式二叉树的创建及遍历
- 链式二叉树的创建及遍历
- 链式二叉搜索树的创建及遍历
- 链式二叉树的遍历
- 二叉树动态链式创建以及遍历
- 二叉树的链式存储实现及遍历
- 二叉树的创建及遍历方式
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建,及遍历 操作
- 二叉树的创建及遍历
- 二叉树的创建及遍历实现
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- 二叉查找树的创建及遍历
- 二叉树的创建及遍历
- 二叉树的创建及遍历
- Burning Midnight Oil
- nyoj 84 阶乘的0
- JAVA基础 (一) 并发 ThreadLocal与Synchronized 用哪一个好
- 我的HR管理原则是“红色的”
- 写给C语言初学者的话
- 链式二叉树的创建及遍历
- 记一个有想法没能力实现的产品形态——实时公交
- 大型高并发高负载网站的系统架构
- web 网页按比例显示图片 js
- 【程序员的自我修养】第1章 温故而知新
- 创建进程,调用Rscript运行相关算法[基于本公司的底层,可以修改,完全去掉依赖这个底层]
- 软件测试容易遗漏的地方
- linux书籍推荐(6本)
- Ubuntu12.10硬盘安装