7-9 根据后序和中序遍历输出先序遍历 (10 分)

简介: 7-9 根据后序和中序遍历输出先序遍历 (10 分)

7-9 根据后序和中序遍历输出先序遍历 (10 分)


本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。


输入格式:


第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。


输出格式:


在一行中输出Preorder: 以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。


输入样例:


1. 7
2. 2 3 1 5 7 6 4
3. 1 2 3 4 5 6 7


结尾无空行


输出样例:


Preorder: 4 1 3 2 6 5 7


结尾无空行


#include<iostream>
using namespace std;
const int N=40;
int n,index;
int post[N],in[N],pre[N];
void dfs(int root,int l,int r){
    if(l>r)return ;
    int i=l;
    while(i<r&&in[i]!=post[root])i++;
    pre[index++]=post[root];
    dfs(root-(r-i+1),l,i-1);
    dfs(root-1,i+1,r);
}
int main(){
    cin>>n;
    for(int i=0;i<n;i++)cin>>post[i];
    for(int i=0;i<n;i++)cin>>in[i];
    printf("Preorder:");
    dfs(n-1,0,n-1);
    for(int i=0;i<n;i++)printf(" %d",pre[i]);
    return 0;
}







目录
相关文章
|
6月前
排序二叉树的创建及先序、中序、后序输出二叉树
排序二叉树的创建及先序、中序、后序输出二叉树
27 1
|
3天前
|
Java C++ 索引
leetcode-106:从中序与后序遍历序列构造二叉树
leetcode-106:从中序与后序遍历序列构造二叉树
28 0
|
5月前
|
C++ 索引
从中序与后序遍历序列构造二叉树(C++实现)
从中序与后序遍历序列构造二叉树(C++实现)
39 1
|
6月前
|
存储 算法 C++
【二叉树】利用前序和中序遍历结果生成二叉树并输出其后序和层序遍历结果
【二叉树】利用前序和中序遍历结果生成二叉树并输出其后序和层序遍历结果
64 0
|
11月前
|
算法
【算法】二叉排序树:创建二叉树,并以中序遍历输出
【算法】二叉排序树:创建二叉树,并以中序遍历输出
187 0
|
存储
刷题之完全二叉树的权值和小字辈及根据后序和中序遍历输出先序遍历
刷题之完全二叉树的权值和小字辈及根据后序和中序遍历输出先序遍历
121 0
|
算法 前端开发 程序员
二叉树的后序遍历序列
二叉树的后序遍历序列
二叉树的后序遍历序列
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历
94 0