PAT a1119

纯JS实现SM3加密算法(兼容IE浏览器) 纯JS实现SM3加密,IE、谷歌、火狐等浏览器可以直接使用。 阅读详情

目的:根据前序和后序确定树。判断树是否唯一。输出一个可能的中序序列

输入:

N 结点数目

前序序列

后序序列

输出:

判断是否树唯一

输出一个可能的中序序列

算法:

前序和后序无法确定是因为当根节点只存在一个子树时,无法确定它是左子树还是右子树。

若除叶子节点外某个点只有一个子树,那么答案不唯一。

建树通过若存在一个子树,那一定是左子树建立。

#include<stdio.h>
#include<vector>

using namespace std;

struct node{
    int val;
    node* left;
    node* right;
} *tree;

vector<int> pre,in,post;
int N;
bool flag = true;
node* newnode(int x)
{
    node* now = new node;
    now->val = x;
    now->left = NULL;
    now->right = NULL;
    return now;
}
void creat(node* &root,int pl,int pr,int pol,int por)
{
    if(pl>pr) return;
    root = newnode(pre[pl]);
    if(pl==pr) return;
    if(pre[pl+1]==post[por-1])
    {
        flag = false;
    }
    int k=0;
    while(post[pol+k]!=pre[pl+1]&&k<por-pol) k++;
    creat(root->left,pl+1,pl+1+k,pol,pol+k);
    creat(root->right,pl+2+k,pr,pol+k+1,por-1);
}
void inorder(node* root)
{
    if(root==NULL) return;
    inorder(root->left);
    in.push_back(root->val);
    inorder(root->right);
}

int main()
{
    scanf("%d",&N);
    pre.resize(N);
    post.resize(N);

    for(int i=0;i<N;i++)
    {
        scanf("%d",&pre[i]);
    }
    for(int i=0;i<N;i++)
    {
        scanf("%d",&post[i]);
    }
    creat(tree,0,N-1,0,N-1);
    if(flag==true)
    {
        printf("Yes\n");
    }else
    {
        printf("No\n");
    }
    inorder(tree);
    for(int i=0;i<in.size();i++)
    {
        if(i!=0) printf(" ");
        printf("%d",in[i]);
    }
    return 0;
}

反思:这个建树的时候有一些麻烦。就是若当前结点为叶子结点的话,那么递归结束。还有若还有一个结点的情况。要模拟退出的状况。

我最开始用的算法是,根据前序序列,一个一个建所有可能的树。然后再后序遍历看是否与后序序列相等。若想等记录下来。若可能的树超过一个,就说明答案不唯一。但是这样会有一定的点超时。一个前序序列建树,可能的树的情况有起码大于2^n这么多种,因为要是所有结点的度都为1。每个结点在左在右都有两种。所以,这种方法不现实。

路由三大分类:直连路由、静态路由、动态路由 直连路由、静态路由和动态路由各有其独特的特点和适用场景。直连路由适用于简单的直接连接网络,静态路由提供了精确的路径控制,而动态路由则在大型复杂网络中展现出强大的适应性和自动化能力。了解和掌握这三种路由类型的配置和管理,对于网络管理员来说,是确保网络高效、安全运行的重要技能。 阅读详情

相关推荐

HBuilderX结合Android Studio实现Uniapp安卓Apk高效离线打包指南

本文提供了一份详细的Uniapp安卓Apk离线打包实战指南。通过整合HBuilderX与Android Studio,手把手教你搭建本地编译环境、配置原生工程、执行核心打包流程,并分享快速更新资源和排查常见问题的技巧,助你彻底摆脱云端打包的排队依赖,实现高效、可控的应用构建。

weixin_28835551的博客 558

PAT甲级真题1119 前序和后序遍历(复杂递归)

假设一个二叉树上所有结点的权值都互不相同。 我们可以通过后序遍历和中序遍历来确定唯一二叉树。 也可以通过前序遍历和中序遍历来确定唯一二叉树。 但是,如果只通过前序遍历和后序遍历,则有可能无法确定唯一二叉树。 现在,给定一组前序遍历和后序遍历,请你输出对应二叉树的中序遍历。 如果树不是唯一的,则输出任意一种可能树的中序遍历即可。 输入格式 第一行包含整数 NN,表示结点数量。 第二行给出前序遍历序列。 第三行给出后序遍历序列。 一行中的数字都用空格隔开。 输出格式 首先第一行,如果树唯一,则输出 Yes,如果

qq_43738331的博客 382

保姆级教程:手把手教你用KITTI数据集跑通LIO-SAM(附EVO评估全流程)

本文提供了一份详细的KITTI数据集LIO-SAM实现教程,涵盖数据准备、算法适配和EVO评估全流程。通过解析KITTI数据集特性、解决LIO-SAM适配问题,并利用EVO工具进行精度评估,帮助读者快速掌握激光惯性SLAM技术。特别针对KITTI数据与LIO-SAM的兼容性问题提供了实用解决方案。

weixin_28737603的博客 303

PAT-A1119 题解

PAT-A 1119 题解 题意分析 这道题要求我们通过后序遍历和先序遍历的顺序还原一颗二叉树,同时把它的中序遍历顺序打印出来。 当然还必须判断,这样的二叉树是否是唯一的。 算法分析 本题的核心就在于还原出这个二叉树。首先我们得明白,什么情况下,我们不能还原出一颗唯一的二叉树? 答案就是,如果在先序遍历的序列中发发现,根节点后面的左右儿子结点只有一个,这个时候我们并不知道它到底是左儿子还是右儿子,所以产生了歧义。为了消除这个歧义,我们就直接假设它是左儿子。消除歧义的同时,给这个二叉树打上标记。 AC代码 #

weixin_44702215的博客 358

驯服电源尖峰:从BUCK/BOOST环路剖析到高di/dt噪声的实战抑制

本文深入探讨了电源系统中高di/dt噪声的产生机制及抑制方法,通过BUCK/BOOST电路的环路分析,揭示了电流路径不连续导致的电压尖峰问题。文章提供了实用的PCB布局技巧和噪声抑制策略,包括最短回路原则、铺铜优化和过孔阵列战术,帮助工程师有效降低EMI噪声,提升电源系统的稳定性。

weixin_29587015的博客 273

开源libmodbus编译为32位和64位动态库

libmodbus 是支持Linux,Mac OS X,window 的一个开源库,支持modbus TCP和RTU 两种模式。

lemontree1945的博客 1923

PAT(A) 1119 Pre- and Post-order Traversals (30)(数据结构)

发现今年秋季的好简单。。亏了。应该都写过知道中序和先序或者后序的一个然后重建树。题目大意: 给你二叉树的先序和后序遍历序列。输出任意一种中序遍历序列(不唯一)。知道先序和后序很容易知道根节点,然后从先序的根结点往后 和 后序序列的开头往后找按升序或降序排列后一样的序列,然后递归建树。#pragma comment(linker, "/STACK:1024000000,102

No Program No Life 488

2024.6.15丨基于VFDB数据库的致病菌毒力因子注释实战指南

本文提供了一份基于VFDB数据库进行致病菌毒力因子本地化注释的实战指南。详细介绍了从环境准备、DIAMOND工具安装、VFDB数据库选择与构建,到核心比对操作及结果解读与过滤的全流程。重点阐述了本地化分析相较于在线工具在速度、稳定性和批量处理上的优势,旨在帮助微生物基因组研究人员高效、精准地识别致病菌的关键毒力因子。

weixin_29220405的博客 270

【PAT甲级】1119 Pre- and Post-order Traversals(前序后序转中序)

【题目链接】 【题意】 根据二叉树的前序和后序序列,如果中序序列唯一,输出Yes,如果不唯一输出No,并输出这个中序序列。 【题解】 众所周知,二叉树是不能够根据前序和中序建立的,为什么呢?首先需要明确先序序列的遍历顺序是:根左右,后序序列的遍历顺序是:左右根。 然后我们来说一下这个样例(为了更好的说明不唯一性,没有用题目给出的样例): 前序:1 4 6 3 2 ...

baguanbao3043的博客 293

Android 14安装的APK默认允许运行时权限

本文介绍了在Android系统中实现安装应用后自动授予运行时权限的方法。通过在安装完成广播中检测应用安装状态,调用新增的DefaultPermissionGrantPolicy.grantAppRuntimePermissions()函数来授予常规权限,并使用allowSpecialPermission()处理特殊权限(如安装未知应用和悬浮窗权限)。文章详细说明了如何修改DefaultPermissionGrantPolicy类,添加grantAppRuntimePermissions和grantRunti

热衷于Android Framework和系统APP的修改经验分享 683

2022中山大学计算机技术专硕考研初试、复试经验帖

个人简介 推荐几个我自己感觉对考研非常有帮助的小助手吧。可以帮助节省时间! 考研时间规划总览 初试篇 数学 英语 政治 408 复试篇 机试 笔试 面试 关于选导师 个人感言

zik的博客 1万+

PAT A1119 Pre- and Post-order Traversals

分数 30作者 CHEN, Yue单位 浙江大学。

qq_51825761的博客 819

YOLO26改进策略【卷积层】| CVPR 2024 可变形卷积 v4(DCNv4)无界权重提表达 + 线程合并降冗余,强化模型收敛速度

DCNv4(Deformable Convolution v4)是一种专为广泛视觉应用设计的高效算子,它对DCNv3进行了关键改进,有效解决了DCNv3存在的速度慢和表达能力受限等问题。

Limiiiing的博客 693

PAT_A1119 Pre- and Post-order Traversals

Source: PAT A1119Pre- and Post-order Traversals(30分) Description: Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a giv...

weixin_34356310的博客 137

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

PAT A1119 2019.08.03 【先后序列建树】

1119Pre- and Post-order Traversals(30分) Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder t...

一个非计算机专业的 博客 572

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

PAT A1119 Pre- and Post-order Traversals(30 分)

//pat A1119 Pre- and Post-order Traversals(30 分) #include &lt;cstdio&gt; #include &lt;algorithm&gt; using namespace std; const int maxn=40; struct node{ int data; node *left,*right; }; int pre[ma...

qq_38705851的博客 314

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

PAT A1119

#include &lt;iostream&gt; struct node{ int data; node *lchild,*rchild; }; int pre[30],post[30],N; bool ans=true; node* createtree(int prel,int prer,int postl,int postr){ if(prel&gt;prer) return NUL...

weixin_37565706的博客 442

PAT A1119 Pre- and Post-order Traversals (30分) (先序和后序序列建树)

PAT甲级:A1119 Pre- and Post-order Traversals (30分) Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inor...

只想用最简短的代码刷题 295

pat a 1119

虽然说了解到先序和后序确定唯一二叉树的条件是不能有节点只有左子树或者又子树,这点是很好论证的,先序是根左右,后序是左右根,因此如果只有某个子树的话就不能确定他是左子树还是右子树了。 那么该如何在代码上实现呢,这里可以从build这个函数的k中说起,这里k从pre的先序左子树开始,一直找到等于post[por-1]的位置为止,post[por-1]位于当前树的右子树的根节点,那么对于在pre找到的k...

blxl313的博客 166

PAT A1119 Group Photo 【链表处理+排序】

这题一开始我蒙了,还以为对于身高相同的元素,要把姓名从左到右从小到大排序,其实并不需要,只要把姓名和身高一起排序就行了。 这道题由于对于每一个小组的内部成员,身高都是先处理为降序再进行重新排列的,而后排的同学都比前排的高,所以可以直接对所有的人先进行一次身高升序排序(同时名字降序排序),然后从后往前处理数据,对于每一组,选择这一组元素下标最大的那个元素,因为一开始是身高升序,名字降序,因此下标最大的那个元素一定是身高最高且名字最小的同学,把这位同学送入链表。 接下来倒序遍历该小组所有成员,一左一右依次送入链

qq_37509216的博客 231

PAT A 1116 1117 1118 1119

1116 判断素数 STL 题目大意: 冠军会得到 “Mystery Award” ,排名为素数的人得到 the Minions 。其他人得到 chocolates。给你比赛排名 以及 参赛者的id,请你找出大家都的什么奖 。 #include&lt;iostream&gt; #include&lt;vector&gt; #include&lt;map&gt; #include&lt;s...

大美mixer的博客 239

1119. Pre- and Post-order Traversals (30)[二叉树遍历]

1. 原题: https://www.patest.cn/contests/pat-a-practise/1119 2. 思路: 题意: 给出前序和后序序列,输出中序序列。 若不唯一,输出任意一个即可。 思路: 二叉树遍历题。类似前序和中序求后序。 这里只不过由于前序和后序不能唯一确定一个二叉树。 首先,我们要分析为什么不能确定呢。 我们知道前序是中左右, 后序是左右中。 如果

坚不萌 346

PAT A 1119 AC代码

#include<iostream> #include<vector> using namespace std; vector<int> pre,post; bool flag=true; string in(int preleft,int preright,int postleft,int postright){ if(preleft==preright) return " "+to_string(pre[preleft]); if(pre[prelef...

maxleo928的博客 196

【PAT】A1119 Pre- and Post-order Traversals【树】

Suppose that all the keys in a binary tree are distinct positive integers. A unique binary tree can be determined by a given pair of postorder and inorder traversal sequences, or preorder and inorder ...

elegant coder 554

PAT A1119 前序遍历后续遍历不唯一生成

之前仅仅接触过如何通过二叉树的中序+先序/后序序列生成唯一二叉树,这一次见到了这个新的题型; 这里先梳理一个概念,之所以会生成树不唯一,一定是有一个叶子,无论其在父节点的左右子节点,都可能生成相同的先序和后序遍历序列; 所以这个时候,思路就很清晰,我们判别一个序列是否唯一,条件就是是否有一个节点只有一个子节点; 大致的序列分割和先序和后...

weixin_34315189的博客 174

PAT A1119-根据前序后序序列建树

题目大意:给出树的节点数,以及前序、后序遍历序列。若树唯一,输出“Yes”,以及中序遍历序列;否则输出“No”,以及任意一个中序遍历序列。 分析: 首先回顾 前、中序建树的过程:前序根节点确定,中序不确定,根据前序确定根节点,在中序中找到根,切分左右子树,递归。 在看 前、后序建树,前序、后序根节点都确定了,且一个在最前,一个在最后,无法切分左右子树。但必须得想办法,切分。 为什么前序和后序序列无法确定唯一的二叉树? 前序根节点 preL 的后一个 preL+1,一定是根的孩子(不知左右);后序根节点

qq_43481884的博客 350
上一篇: PAT a1118
下一篇: PAT a1117
CSlerner
博客等级 码龄9年 153粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值