1127. ZigZagging on a Tree (30) PAT 甲级

2024-03-06 20:48
文章标签 30 tree pat 甲级 1127 zigzagging

本文主要是介绍1127. ZigZagging on a Tree (30) PAT 甲级,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

传送门

#include<stdio.h>
#include<queue>
#include<algorithm> 
#define MAX_N 32using namespace std;typedef struct Node {Node *lchild;Node *rchild;int data;int level;
}node,*BTtree;int in[MAX_N],post[MAX_N];
int n;
int level[MAX_N];//对应层数的个数
int num[MAX_N];//全部数值 
int maxLevel=0;
//vector<vector<int> > v(MAX_N);void build(BTtree &root,int inL,int inR,int postL,int postR){if(inL>inR){return;}int m;for(int i=inL;i<=inR;i++){if(in[i]==post[postR]){m=i;break;}}if(root==NULL){root=new node;root->data=in[m];root->lchild=root->rchild=NULL;//return ;}build(root->lchild,inL,m-1,postL,postL+m-inL-1);build(root->rchild,m+1,inR,postR-inR+m,postR-1);
}//void pre(BTtree root){
//  if(root==NULL)
//      return;
//  printf("%d ",root->data);
//  pre(root->lchild);
//  pre(root->rchild);
//}void bfs(BTtree root){int count=0;queue<BTtree> q;root->level=1;q.push(root);while(!q.empty()){BTtree p=q.front();q.pop();level[p->level]++;if(p->level>maxLevel){maxLevel=p->level;}//printf("%d ",p->data);num[count++]=p->data; if(p->lchild!=NULL){p->lchild->level=p->level+1;q.push(p->lchild);}if(p->rchild!=NULL){p->rchild->level=p->level+1;q.push(p->rchild);}}
}void trans(int L,int R){int m=(L+R)/2;for(int i=L;i<=m;i++){int temp=num[i];num[i]=num[R-(i-L)];num[R-(i-L)]=temp;}
}int main(){BTtree root=NULL;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&in[i]);}for(int i=0;i<n;i++){scanf("%d",&post[i]);}build(root,0,n-1,0,n-1);bfs(root);int pos=0;for(int i=1;i<=maxLevel;i++){if(i%2==1)trans(pos,pos+level[i]-1);for(int j=0;j<level[i];j++){printf("%d",num[pos++]);if(pos!=n){printf(" ");}}}
}

这篇关于1127. ZigZagging on a Tree (30) PAT 甲级的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/781298

相关文章

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

poj 1127 线段相交的判定

题意: 有n根木棍,每根的端点坐标分别是 px, py, qx, qy。 判断每对木棍是否相连,当他们之间有公共点时,就认为他们相连。 并且通过相连的木棍相连的木棍也是相连的。 解析: 线段相交的判定。 首先,模板中的线段相交是不判端点的,所以要加一个端点在直线上的判定; 然后,端点在直线上的判定这个函数是不判定两个端点是同一个端点的情况的,所以要加是否端点相等的判断。 最后

2024网安周今日开幕,亚信安全亮相30城

2024年国家网络安全宣传周今天在广州拉开帷幕。今年网安周继续以“网络安全为人民,网络安全靠人民”为主题。2024年国家网络安全宣传周涵盖了1场开幕式、1场高峰论坛、5个重要活动、15场分论坛/座谈会/闭门会、6个主题日活动和网络安全“六进”活动。亚信安全出席2024年国家网络安全宣传周开幕式和主论坛,并将通过线下宣讲、创意科普、成果展示等多种形式,让广大民众看得懂、记得住安全知识,同时还

树(Tree)——《啊哈!算法》

树 什么是树?树是一种特殊的图,不包含回路的连通无向树。 正因为树有着“不包含回路”这个特点,所以树就被赋予了很多特性。 一棵树中的任意两个结点有且仅有唯一的一条路径连通。一棵树如果有n个结点,那么它一定恰好有n-1条边。在一棵树中加一条边将会构成一个回路。 一棵树有且只有一个根结点。 没有父结点的结点称为根结点(祖先)。没有子结点的结点称为叶结点。如果一个结点既不是根结点也不是叶

c++习题30-求10000以内N的阶乘

目录 一,题目  二,思路 三,代码    一,题目  描述 求10000以内n的阶乘。 输入描述 只有一行输入,整数n(0≤n≤10000)。 输出描述 一行,即n!的值。 用例输入 1  4 用例输出 1  24   二,思路 n    n!           0    1 1    1*1=1 2    1*2=2 3    2*3=6 4

226 Invert Binary Tree

//226 Invert Binary Tree//算法思路:主要使用递归算法public class Solution {public TreeNode invertTree(TreeNode root) {//1 出口 空节点if (root==null)return null;//2 递归 调用自己TreeNode left = root.left;TreeNode right = ro

嵌入式面试经典30问:二

1. 嵌入式系统中,如何选择合适的微控制器或微处理器? 在嵌入式系统中选择合适的微控制器(MCU)或微处理器(MPU)时,需要考虑多个因素以确保所选组件能够满足项目的具体需求。以下是一些关键步骤和考虑因素: 1.1 确定项目需求 性能要求:根据项目的复杂度、处理速度和数据吞吐量等要求,确定所需的处理器性能。功耗:评估系统的功耗需求,选择低功耗的MCU或MPU以延长电池寿命或减少能源消耗。成本