【二叉树】已知中序遍历、按层遍历,求先序、后序遍历
#include <bits/stdc++.h>
using namespace std;
string z,c;
void dfs(int z_left,int z_right,string cc)
{
if(cc.length()<=0){
return ;
}else {
char root=cc[0];//层次遍历的第一个,就是根节点
int mid=z.find(root);
string left_tree,right_tree;
for(int i=1;i<cc.length();i++){
char x=cc[i];
if(z.find(x)<mid){
left_tree+=x;
}else {
right_tree+=x;
}
}
//先序遍历
cout<<root;
dfs(0,mid-1,left_tree);
dfs(mid+1,z.length()-1,right_tree);
/*
后序遍历
dfs(0,mid-1,left_tree);
dfs(mid+1,z.length()-1,right_tree);
cout<<root;
*/
}
}
int main()
{
cin>>z>>c;
dfs(0,z.length()-1,c);
return 0;
}