数据结构实验之求二叉树后序遍历和层次遍历
来源:互联网 发布:淘宝上发光闹钟说明书 编辑:程序博客网 时间:2024/06/17 12:35
数据结构实验之求二叉树后序遍历和层次遍历
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历和层序遍历。
Input
输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据。每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列。
Output
每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列。
Example Input
2abdegcfdbgeafcxnliulnixu
Example Output
dgebfcaabcdefglinuxxnuli
Hint
Author
ma6174
#include <bits/stdc++.h>using namespace std;struct Btree{ char data; struct Btree *lc,*rc;};char pre[10010];//前序序列char mid[10010];//中序序列struct Btree* creat(int len, char *pre, char *mid)//二叉树的重建{ struct Btree *root; int i ; if(len == 0) { return NULL; } root = new Btree; root -> data = pre[0];//找到根节点(前序遍历的第一位) for(i = 0; i < len; i++)//在中序序列中找到根节点的位置 { if(mid[i] == pre[0]) break; } root -> lc = creat(i, pre + 1, mid);//递归遍历(左子树的长度,左子树在pre中开始位置的地址,左子树在mid中开始位置的地址) root -> rc = creat(len-i-1, pre+i+1, mid+i+1);//(右子树的长度,右子树在pre中开始位置的地址,右子树在mid中开始位置的地址) return root;};void LRD(struct Btree *root)//后序遍历{ if(root) { LRD(root -> lc); LRD(root -> rc); cout<<root->data; }}void cengxu(struct Btree * root)//以层序遍历的方式,寻找叶子节点{ queue<Btree*>q; if(root) q.push(root); Btree *qq; while(!q.empty()) { qq = q.front(); q.pop(); if(qq -> lc) q.push(qq->lc); if(qq -> rc) q.push(qq->rc); cout<<qq->data; }}int main(){ int n; while(cin>>n) { while(n--) { cin>>pre>>mid; int len = strlen(pre); struct Btree *root; root = creat(len,pre,mid); LRD(root); cout<<endl; cengxu(root); cout<<endl; } } return 0;}
阅读全文
0 0
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之求二叉树后序遍历和层次遍历
- Linux进程间通信 共享内存实现
- 在Web应用中,会用到大量的Ajax请求,在Ajax请求中存在的一个问题就是如何判断session超时,在网上找到的一个java中处理此问题方法:
- 你的网卡真有千兆么?——千兆网卡传输速度解析
- java开发微信公众平台(一)-- 服务器配置
- Oracle 11G 虚拟列 Virtual Column
- 数据结构实验之求二叉树后序遍历和层次遍历
- 如何使用脚本批量创建虚拟机(上)
- 写给一名软件测试工程师
- UDP --02--UDP广播数据
- Python进阶(十二)-浅谈python中的方法
- 理解分布式一致性协议:二、三阶段提交
- Elasticsearch 5.x head插件安装指南 及问题
- C++内存布局(下)
- C#使用Log4net输出日志