poj2255
2015-11-10 23:28
295 查看
给出二叉树的前序遍历和中序遍历,写出后序遍历。。。
前序是根左子树右子树,中序是左子树根右子树,所以对于每一个在前序中的字母,找到在中序中的位置,则左边是它的左子树,右边是它的右子树
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <stdlib.h>
using namespace std;
char mid[27],pre[27];
int n=-1;
void make_tree(int i,int j)
{
int k;
if(i>j)return;
n++;
for(k=i;k<=j;k++)
{
if(pre
==mid[k])break;
}
make_tree(i,k-1);
make_tree(k+1,j);
cout<<mid[k];
}
int main()
{
while(cin>>pre>>mid)
{
make_tree(0,strlen(pre)-1);
cout<<endl;
n=-1;
}
return 0;
}
前序是根左子树右子树,中序是左子树根右子树,所以对于每一个在前序中的字母,找到在中序中的位置,则左边是它的左子树,右边是它的右子树
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <stdlib.h>
using namespace std;
char mid[27],pre[27];
int n=-1;
void make_tree(int i,int j)
{
int k;
if(i>j)return;
n++;
for(k=i;k<=j;k++)
{
if(pre
==mid[k])break;
}
make_tree(i,k-1);
make_tree(k+1,j);
cout<<mid[k];
}
int main()
{
while(cin>>pre>>mid)
{
make_tree(0,strlen(pre)-1);
cout<<endl;
n=-1;
}
return 0;
}
相关文章推荐
- Android中如何使用命令行查看内嵌数据库SQLite3
- MySQL学习笔记---- LOAD DATA LOCAL INFILE中文乱码
- android The method execute(Void[]) is ambiguous for the type new AsyncTask<Void,Void,Void>(){}
- Qt应用程序图标的个性化设置
- DDR布线规则与过程
- pAdTy_-8 支持不同的设备
- 记一次AD域域管理员密码更改导致某系统群集管理器故障排查解决过程
- 算法的稳定定性及各算法稳定性分析
- hadoop之远程debug
- 如何优雅的在AndroidM中使用SD卡
- 开发项目中如何预估时间
- 转:让kindle更好的支持pdf
- 源码安装一般用途nginx+php
- centos6.5 查找不到php.ini文件
- CentOS6.7 mysql 主从配置
- 用provider 读取本地相处和视频
- 学习安卓1 基础知识
- Hibernate之HQL查询
- Hibernate之HQL查询
- 可以用来开发h5的软件小结