求先序排列 蓝桥杯
来源:互联网 发布:淘宝假物流单号怎么办 编辑:程序博客网 时间:2024/05/02 01:36
问题描述
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度<=8)。
输入格式
两行,每行一个字符串,分别表示中序和后序排列
输出格式
一个字符串,表示所求先序排列
样例输入
BADC
BDCA
BDCA
样例输出
ABCD
解题思路:
后序遍历的最后一位是根,因此可以在中序遍历中找到后序遍历的根,然后递归右子树,左子树即可
#include<cstdio>#include<iostream> #include<cstring>#include<string>#include<algorithm>using namespace std;struct node{char data;struct node *lc,*rc;};bool vis[26];void dfs(node *&T,string a,string b){int lb=b.length();int la=a.length();if(lb>0&&la>0){T=(node *)malloc(sizeof(node));int t=lb-1;while(t){if(!vis[b[t]-'A'])break;elset--;}if(t<0) return ;T->data=b[t];vis[b[t]-'A']=true;dfs(T->rc,a.substr(a.find(b[t])+1,la-a.find(b[t])-1),b.substr(0,t));dfs(T->lc,a.substr(0,a.find(b[t])),b.substr(0,t));}elseT=NULL;}void visit(node *T){if(T!=NULL){cout<<T->data;visit(T->lc);visit(T->rc);}}int main(){string s1,s2;cin>>s1>>s2;memset(vis,0,sizeof(vis));int l1=s1.length(),l2=s2.length();node *T;dfs(T,s1,s2);visit(T);}
0 0
- 求先序排列 蓝桥杯
- 求先序排列
- 求先序排列
- 求先序排列
- 蓝桥杯 排列
- 蓝桥杯练习题—— 求先序排列
- 已知中序排列和后序排列求先序排列
- 题目:[NOIP2001]求先序排列
- 【树】[NOIP2001]求先序排列
- 求先序,后序排列
- [ALGO-20] 求先序排列
- Codevs 1013 求先序排列
- Tsinsen A1132 求先序排列
- 【NOIP2001P3】求先序排列
- 洛谷 P1030 求先序排列
- 洛谷 P1030 求先序排列
- 【codevs 1013】求先序排列
- 求先序排列-ssl 1013
- Android 3D游戏开发技术详解与典型案例
- leetcode-58 Length of Last Word
- 【饥荒】介绍一些组件
- HDU 1114 Piggy-Bank
- Service 学习一
- 求先序排列 蓝桥杯
- SSIS批量导入excel表
- Javascript with
- linux-Apache 配置
- KMP+枚举 POJ-3080 Blue Jeans
- 全排列的算法(五)——邻位互换法
- EventProxy流程控制
- python实现简单爬虫功能
- UVA 11806 Cheerleaders