题目
·要求
给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 ≤8)。
·输入描述:
共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。
·输出描述:
共一行一个字符串,表示一棵二叉树的先序。
·样例输入:
BADC
BDCA
·样例输出:
ABCD
代码
·递归代码
string s1,s2;
void dfs(int l1,int r1,int l2,int r2){
if(l1>r1){
return ;
}
int x=s2.find(s1[r1]);
cout<<s1[r1];
dfs(l1,l1+x-l2-1,l2,x-1);
dfs(l1+x-l2,r1-1,x+1,r2);
}
·完整代码
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
void dfs(int l1,int r1,int l2,int r2){
if(l1>r1){
return ;
}
int x=s2.find(s1[r1]);
cout<<s1[r1];
dfs(l1,l1+x-l2-1,l2,x-1);
dfs(l1+x-l2,r1-1,x+1,r2);
}
int main(){
cin>>s2>>s1;
dfs(0,s1.size()-1,0,s2.size()-1);
return 0;
}
如果有用就给个赞吧,谢谢支持!
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/c1239568/article/details/140956544