题目描述
本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。
输入
第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。
输出
在一行中输出Preorder:
以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。
输入样例1
7 2 3 1 5 7 6 4 1 2 3 4 5 6 7
输出样例1
Preorder: 4 1 3 2 6 5 7
AC代码
代码语言:javascript复制#include<iostream>
using namespace std;
void recursion(int*postorder,int*inorder,int last){
if(last<0)
return;
cout<<' '<<postorder[last];
int temp=postorder[last];
int root=0;
for(int i=0;i<=last;i )
if(inorder[i]==postorder[last]){
root=i;
break;
}
recursion(postorder,inorder,root-1);
recursion(postorder root,inorder root 1,last-root-1);
}
int main() {
int size;
cin>>size;
int postorder[size],inorder[size];
for(int i=0;i<size;i )
cin>>postorder[i];
for(int i=0;i<size;i )
cin>>inorder[i];
cout<<"Preorder:";
recursion(postorder,inorder,size-1);
}