NC16692. [NOIP2001]求先序排列
描述
输入描述
2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
输出描述
1行,表示一棵二叉树的先序。
示例1
输入:
BADC BDCA
输出:
ABCD
C++ 解法, 执行用时: 3ms, 内存消耗: 408K, 提交时间: 2022-04-07 20:38:12
#include<bits/stdc++.h> using namespace std; void solve(int l,char *a,char *b){ for(int i=l-1;i>=0;i--){ if(a[i]==b[l-1]){ cout<<a[i]; solve(i,a,b); solve(l-i,a+i,b+i-1); } } } int main(){ char a[10],b[10]; cin>>a>>b; int n=strlen(a); solve(n,a,b); return 0; }
pypy3 解法, 执行用时: 124ms, 内存消耗: 25832K, 提交时间: 2022-04-16 11:12:17
def dfs(mid, back): if len(mid) > 0: print(back[-1], end='') flag = mid.find(back[-1]) dfs(mid[:flag], back[:flag]) dfs(mid[flag + 1:], back[flag:len(mid) - 1]) mid = input() back = input() dfs(mid, back)
Python3 解法, 执行用时: 40ms, 内存消耗: 4540K, 提交时间: 2023-01-29 17:08:56
def dfs(a, b): if len(a) > 0: print(b[-1], end='') flag = a.find(b[-1]) dfs(a[:flag], b[:flag]) dfs(a[flag+1:], b[flag:len(a)-1]) mid = input() back = input() dfs(mid, back)