题目描述
用一棵二叉树的前序遍历序和中序遍历序可以唯一确定一棵二叉树,这个算法的核心操作是根据前序遍历序,查找中序遍历序中根节点的位置,以确定左子树序列,根节点,和右子树序列。然后递归找到每个子树的根节点就可以完成二叉树的构造。
输入格式
每行输入为一棵非空二叉树的前序遍历序串和中序遍历序串(两串长度均不超过2000),前序遍历序和中序遍历序中间用一个空格隔开。 每个结点为一个字符(字母或数字),且不存在相同结点。
输出格式
对每行输入,输出根节点在中序遍历序列中的下标
输入样例
abc bac
ab ba
输出样例
1
1
代码展示
#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<string>
using namespace std;
int main(){
//freopen("/config/workspace/test/test","r",stdin);
string pre;
string in;
while(cin>>pre>>in){
int root;
for(int i=0;i<in.length();i++){
if(in[i]==pre[0]){
root=i;
break;
}
}
cout<<root<<endl;
}
return 0;
}