本文主要是介绍C - 求先序 计蒜客 - T2113,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度 \le≤ 88)。
输入格式
22 行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出格式
11 行,表示一棵二叉树的先序。
输出时每行末尾的多余空格,不影响答案正确性
样例输入
BADC
BDCA
样例输出
ABCD
#include<stdio.h>
#include<string.h>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
char a[10],b[10];//a是中序,b是后序
void dfs(int l1,int r1,int l2,int r2)
{int i,k=-1;for(i=l1;i<r1;i++){if(a[i]==b[r2-1]){k=i;printf("%c",a[i]);break;}}if(k>l1) dfs(l1,k,l2,k-l1+l2);if(k+1<r1) dfs(k+1,r1,k-l1+l2,r2-1);
}
int main()
{scanf("%s",a);scanf("%s",b);int l1=strlen(a);int l2=strlen(b);dfs(0,l1,0,l2);return 0;
}
这篇关于C - 求先序 计蒜客 - T2113的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!