PAT甲级真题1020.树的遍历

翻译和代码思路:Acwing

一个二叉树,树中每个节点的权值互不相同。

现在给出它的后序遍历和中序遍历,请你输出它的层序遍历。

输入格式

第一行包含整数 N,表示二叉树的节点数。

第二行包含 N个整数,表示二叉树的后序遍历。

第三行包含 N 个整数,表示二叉树的中序遍历。

输出格式

输出一行 N个整数,表示二叉树的层序遍历。

数据范围

1<=N<=30

输入样例:

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

输出样例:

4 1 6 3 5 7 2

PAT甲级真题1020.树的遍历

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
const int N=40;
int a[N],b[N],p[N];
int n;
vector<int> layer[N]; 
void Create(int al,int ar,int bl,int br,int d){
    if(al>ar) return;
    int val=a[ar];
    int k=p[val];   //当前递归中根节点的位置
    int numLeft=k-bl;  //左子树的结点树
    layer[d].push_back(val);
    Create(al,al+numLeft-1,bl,bl+numLeft,d+1);
    Create(al+numLeft,ar-1,k+1,br,d+1);
}
int main()
{
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=0;i<n;i++) cin>>b[i];
    for(int i=0;i<n;i++) p[b[i]]=i;  //记录中序遍历结点的位置
    Create(0,n-1,0,n-1,0);   //创建树
    for(int i=0;i<n;i++){
        for(auto x:layer[i]){
            cout<<x<<" ";
        }
    }
    return 0;
}

 

原文链接:https://www.cnblogs.com/yulianyi/p/17281471.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PAT甲级真题1020.树的遍历 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • python二叉树常用算法总结

    下面是关于“Python二叉树常用算法总结”的完整攻略。 1. 二叉树简介 二叉树是一种树形结构,它的每个节点最多有两个子节点。二叉的节点包含一个值和两个指针分别指向左子树和右子树。二叉树的遍历方式包括前序遍历、中序遍历和后序遍历。 2. Python实现二叉树 在Python中,我们可以使用 Node 类来表示二叉树的节点,使用 BinaryTree 类来…

    python 2023年5月13日
    00
  • MySQL索引结构详细解析

    MySQL索引结构是MySQL数据库中非常重要的一部分,它能够显著提升数据库查询效率。本文将详细解析MySQL索引结构,包括索引的基本概念、常见的索引类型、索引的创建、索引的使用和索引的优化等方面。 索引的基本概念 索引是一种数据结构,它可以加速数据库中的查询操作。索引一般是在表中一个或多个列上创建的,这些列的值被按照一定的规则存储在索引中。当查询时,可以通…

    数据结构 2023年5月17日
    00
  • python使用梯度下降算法实现一个多线性回归

    以下是关于“Python使用梯度下降算法实现一个多线性回归”的完整攻略: 简介 多线性回归是一种常用的机器学习算法,它可以用于预测多个自变量和一个因变量之间的关系。本教程将介绍如何使用Python使用梯度下降算法实现一个多线性回归,并提供两个示例。 数据集 我们将使用一个包含两个自变量和一个因变量的数据集来训练和测试我们的模型。数据集包含100个样本,每个样…

    python 2023年5月14日
    00
  • python自动分箱,计算woe,iv的实例代码

    自动分箱、计算WOE和IV是数据预处理中常用的技术,可以帮助我们更好地理解数据,提高模型的预测能力。在本攻略中,我们将介绍如何使用Python实现自动分箱、计算WOE和IV的过程。 1. 数据准备 首先,我们需要准备一份数据集。在本攻略中,我们将使用一个名为“credit”的数据集,其中包含了一些客户的个人信息和信用评分。我们的目标是根据这些信息预测客户的信…

    python 2023年5月14日
    00
  • 数据结构与算法中二叉树子结构的详解

    数据结构与算法中二叉树子结构的详解 什么是二叉树子结构 二叉树是一种数据结构,由包含根节点的节点组成,可以拓展为左子树和右子树。二叉树子结构指的是,在一棵二叉树中,具有连续节点的子树。 如何判断是否为二叉树子结构 对于一棵二叉树T和另外一棵二叉树S,我们可以判断S是否为T的子树,遵循以下判断原则: 如果树S为空,则表示S不是T的子树; 如果树S的根节点和树T…

    数据结构 2023年5月17日
    00
  • C语言数据结构 双向链表的建立与基本操作

    C语言数据结构 双向链表的建立与基本操作 双向链表的定义 双向链表是一种常见的线性数据结构,它由多个结点组成,每个结点有两个指针,一个指向前一个结点,一个指向后一个结点。对于一个双向链表,我们可以获得其第一个结点和最后一个结点的指针,也可以沿着链表从前往后或从后往前遍历链表的每个结点。 双向链表的建立 我们首先需要定义一个双向链表的结点类型,包括两个指针,一…

    数据结构 2023年5月17日
    00
  • C++ 数据结构超详细讲解顺序表

    C++ 数据结构:超详细讲解顺序表 什么是顺序表 顺序表是一种线性结构,它用一段地址连续的存储单元依次存储线性表中的各个元素。 顺序表的结构 顺序表由两部分组成,分别是元素存储区和表长度信息。元素存储区通常用数组实现,表长度信息记录表中元素的个数。 顺序表的操作 常见的顺序表操作包括: 初始化操作 插入操作 删除操作 查找操作 遍历操作 初始化顺序表 初始化…

    数据结构 2023年5月17日
    00
  • Mysql 数据库结构及索引类型

    好的。首先,我们需要了解 Mysql 数据库的基本结构和索引类型。 Mysql 数据库结构 Mysql 数据库包含多个数据库,每个数据库包含多个数据表,每个数据表包含多个数据记录(或者叫行)。关键的概念包括数据库、数据表、数据记录以及 Mysql 列类型等。 数据库 Mysql 数据库是一个命名的容器,用于存储和管理相关数据表。可以使用以下 SQL 代码来创…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部