练习赛13.4.求后序遍历
来源:互联网 发布:淘宝色差问题怎么回复 编辑:程序博客网 时间:2024/06/18 04:28
求后序遍历
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 4 Accepted Submission(s) : 3
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
Input
输入有多组数据,对于输入每组数据有两行,第一行一个字符串(字符串长度不超过30),表示树的先序遍历,第二行一个字符串,表示树的中序遍历。树的结点一律用小写字母表示。
Output
对于每组输入输出仅一行,表示树的后序遍历序列。
Sample Input
abdecdbeac
Sample Output
debca
思路分析:涉及到二叉树的知识,先序的排列方式是先排根节点然后拍左节点然后拍右节点,中序是先排左节点然后拍根节点最后排右节点,后序为排左节点然后拍右节点然后排根节点;
代码#include<iostream>#include <stdio.h>#include <string>using namespace std;int i;int chazhao(string s1,char c)//在中序中查找{ for(i=0;i<s1.length();i++) if(c==s1[i]) return i; return -1;}bool bianli(string &str,string &mid){ if(str.length()==0)//如果先序没有 return false; if(str.length()==1)//如果先序为1就返回 { cout<<str; return true; } int k=chazhao(mid,str[0]);//找到根节点 string newstr=str.substr(1,k);//从先序的左边开始查找 string newmid=mid.substr(0,k);//从中序的左边开始查找 bianli(newstr,newmid);//找到新的根节点 newstr=str.substr(k+1,str.length()-k-1);//重复上面的从右边开始。 newmid=mid.substr(k+1,mid.length()-k-1); bianli(newstr,newmid); cout<<str[0];}int main(){ string str,mid; while(cin>>str>>mid) { bianli(str,mid); cout<<endl; } return 0;}:
- 练习赛13.4.求后序遍历
- 练习赛13.3二叉树遍历
- 数组遍历的练习
- JAVA 目录深度遍历 练习
- 二维数组的遍历练习
- Python练习6-文件遍历
- 【练习】二叉树的遍历
- (练习)遍历XML文档
- SDKD 14级组队练习赛(一) D 数组存储二叉树并递归遍历
- 团体程序设计天梯赛-练习集 L2-006 树的遍历 根据后序中序建树+BFS
- PAT 团体程序设计天梯赛-练习集 L2-006. 树的遍历【数据结构】
- 团体程序设计天梯赛-练习集 L2-006. 树的遍历
- 团体程序设计天梯赛-练习集L2-006. 树的遍历
- PAT 团体程序设计天梯赛-练习集 L2-006. 树的遍历
- 团体程序设计天梯赛-练习集 L2-006. 树的遍历 解题报告
- jQuery 遍历 - find() 方法 练习1
- 【编程练习】复习一下树的遍历
- [RunTime练习二]属性的遍历
- 6业务战略与财务方法-两个行业举例分析财务数据2
- PHP操作MongoDB学习
- 【UML 建模】UML建模语言入门 -- 用例视图详解 用例视图建模实战
- linux驱动开发面试
- 使用自动生成java文件和自动编译的动态代理模式
- 练习赛13.4.求后序遍历
- xp+ubuntu 格式化了ubuntu,出现grub rescue,U盘启动进不去
- SGU117—Counting (快速幂取模)
- java.lang.SecurityException: No permission to modify given thread
- poj1837(分组背包)
- KM模板
- 可拖拉的Table jquery 实现
- 简单模拟LinkedList
- 特征向量的归一化方法