知道后/中序遍历,求前
来源:互联网 发布:软件职业技能培训学校 编辑:程序博客网 时间:2024/04/29 05:34
#include <iostream>#include <string.h>#include <stdio.h>using namespace std;struct ttt{int l,r,w;};char q1[50];char q2[50];ttt qq[500];int walked[500];int n;int gg;int tt;int tree(int x,int y,int m,int w){ cout << x <<"----- " << y << " --- " <<endl; int k=x; if(x>y)return 0; while(k<=y){ if(q1[tt]==q2[k]){ break; } k++; } if(k>y)return 0; gg++; qq[gg].w=tt; int g1=gg; cout << "YES K= " << k<< endl; if(m==0){ qq[w].l=g1; }else if(m==1){ qq[w].r=g1; } tt--; tree(k+1,y,1,g1); tree(x,k-1,0,g1);}int dfs1(int n){ cout << q1[qq[n].w]; if(qq[n].l!=0)dfs1(qq[n].l); if(qq[n].r!=0)dfs1(qq[n].r);}int dfs2(int n){ if(qq[n].l!=0)dfs2(qq[n].l); cout << q1[qq[n].w]; if(qq[n].r!=0)dfs2(qq[n].r);}int dfs3(int n){ if(qq[n].l!=0)dfs3(qq[n].l); if(qq[n].r!=0)dfs3(qq[n].r); cout << q1[qq[n].w];}int main(){ freopen("in.txt","r",stdin); int i,j,k,f1,f2,f3,t2,t3; int m; int t1=0; cin >>n; for(i=1;i<=n;i++){ cin >> q1[i]; } for(i=1;i<=n;i++){ cin >> q2[i]; } memset(walked,0,sizeof(walked)); gg=0; tt=n; tree(1,n,-1,0); for(i=1;i<=n;i++) cout << i <<"是" << q1[qq[i].w]<< " 左儿子是" << qq[i].l << "右儿子是" <<qq[i].r<< endl; dfs1(1); cout << endl; dfs2(1); cout << endl; dfs3(1); cout << endl; return 0;}
0 0
- 知道后/中序遍历,求前
- 已知中序和后序||前序, 求前,后,层序遍历问题
- 前序遍历,中序遍历和后序遍历 & 已知两种遍历,求第三种遍历
- 树的遍历-已知中序+(前序|后序)求层次遍历
- 二叉树 前 后 中序遍历, 按层遍历, 求高度, 交换左右儿子等
- 二叉树的遍历方法及根据前/中(后/中)序遍历求后(前)序遍历的代码实现
- 树的遍历-已知中序+(前序|后序)求(后序|前序)
- 已知二叉树的前序遍历和中序遍历,求二叉树的后序遍历
- 已知前序遍历序列和中序遍历序列,求二叉树的后序遍历
- 题目1078:二叉树遍历 由中序 前序 求 后序
- 二叉树插入、删除、递归求高度、度、前序、中序、后序遍历
- 已知二叉树的前序,中序,后序遍历中的两个,求另一个
- 树 前序遍历,中序遍历,后序遍历
- 前序遍历 中序遍历 后序遍历
- 前序遍历+中序遍历=后序遍历 中序遍历+后序遍历=前序遍历
- 前序、中序、后序遍历
- 前序、中序、后序遍历
- 前序 中序 后序遍历
- ORMLite使用中出现的问题及解决办法
- C++ this指针解析
- (转)从零开始的回调
- vmware ubuntu上网
- linux一些常用iptables防火墙规则整理收集
- 知道后/中序遍历,求前
- ubuntu自动启动ssh server
- HDU
- PCA学习总结
- js中日期格式正则和两日期相差时间计算
- 关于原创文章的发布技巧以及平台
- 基于C++的图片文件路径设置及扫描规定格式文件
- HDU 最大上升子序列题解
- android版本下载以及切换