题面:
树和二叉树基本上都有先序、中序、后序、按层遍历等遍历顺序,给定中序和其它一种 遍历的序列就可以确定一棵二叉树的结构。 假定一棵二叉树一个结点用一个字符描述,现在给出中序和按层遍历的字符串,求该树的先序遍历字符串。
输入:
DBEAC
ABCDE
输出:
ABDEC
一个遍历二叉树的问题,不做多讲,CODE:
1. #include<bits/stdc++.h>
using namespace std;
string zhong,ceng;//中序和层序(拼音)
void dfs(int zhongleft,int zhongright,string sceng){
if(sceng.size()<=0){
return;//树空了就退出
}
char root=sceng[0];
int mid=zhong.find(root);
string lefttree,righttree;//左边的树和右边的树
for(int i=1;i<sceng.size();i++){
char t=sceng[i];//找出除根外的一个节点
if(zhong.find(t)<mid){
lefttree+=t;//为左边的树,加入左树
}
else{
righttree+=t;//反之则加入右树
}
}
cout<<root;
dfs(zhongleft,mid-1,lefttree);//遍历左树
dfs(mid+1,zhongright,righttree);//遍历右树
}
int main(){
cin>>zhong>>ceng;
dfs(0,zhong.size()-1,ceng);
}