acwing:1576. 再次树遍历

打卡一道有意义的题。

题签:

通过使用栈可以以非递归方式实现二叉树的中序遍历。

例如,假设遍历一个如下图所示的 66 节点的二叉树(节点编号从 11 到 66)。

则堆栈操作为:push(1); push(2); push(3); pop(); pop(); push(4); pop(); pop(); push(5); push(6); pop(); pop()。

我们可以从此操作序列中生成唯一的二叉树。

你的任务是给出这棵树的后序遍历。

3.png

输入格式

第一行包含整数 NN,表示树中节点个数。

树中节点编号从 11 到 NN。

接下来 2N2N 行,每行包含一个栈操作,格式为:

  • Push X,将编号为 XX 的节点压入栈中。
  • Pop,弹出栈顶元素。
输出格式

输出这个二叉树的后序遍历序列。

数据保证有解,数和数之间用空格隔开,末尾不能有多余空格。

数据范围

1≤N≤301≤N≤30

输入样例:
6
Push 1
Push 2
Push 3
Pop
Pop
Push 4
Pop
Pop
Push 5
Push 6
Pop
Pop
输出样例:
3 4 2 6 5 1

 思路:

一开始没思路,感觉很奇怪,但是看到有人指出非递归遍历的二叉树push过程其实就是先序遍历,pop过程其实就是中序遍历,这么一来那就无脑上板子就好了。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=50;
int n;
int a[N],b[N];
struct tree{int l,r;int v;
}p[N];
int cnt,idx;
stack<int> stk;int built(int al,int ar,int bl,int br){if(al>ar){return 0;}int r=a[al];int k=0;while(a[al]!=b[k]){k++;}int len=k-bl;p[r].v=r;p[r].l=built(al+1,al+len,bl,bl+len);p[r].r=built(al+len+1,ar,bl+len+1,br);return r;
}
void print(int x){if(p[x].l){print(p[x].l);}if(p[x].r){print(p[x].r);}cout<<p[x].v<<" ";}
int main()
{ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>n;for(int i=1;i<=2*n;i++){string str;int x;cin>>str;if(str=="Push"){cin>>x;stk.push(x);a[++cnt]=x;}else{b[++idx]=stk.top();stk.pop();}}built(1,n,1,n);print(a[1]);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1560199.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

智能配音软件哪款好?分享5个搞怪软件

想要让视频或社交媒体内容更加生动有趣&#xff1f;搞笑配音软件是个不错的选择。 无论是嘻哈风格的视频&#xff0c;还是搞怪的段子&#xff0c;合适的配音都能让内容增色不少。 今天&#xff0c;就让我们来探索六个文字配音软件&#xff0c;它们不仅能帮你实现搞笑配音&…

H5如何做性能测试?

说起H5性能测试&#xff0c;可能许多同学有所耳闻&#xff0c;但是不知道该如何去做性能测试&#xff0c;或者不知道H5应该关注哪些性能指标。今天我们就来看下。希望阅读本文后&#xff0c;能够有所了解。 常用指标 1、H5性能相关参数介绍 白屏时间&#xff1a;用户首次看到…

L16171819 【哈工大_操作系统】进程同步与信号量信号量临界区保护信号量的代码实现死锁处理

L2.9 进程同步与信号量 让进程走走停停&#xff0c;实现进程同步。 1.、信号量的定义 生产者Producer需要判断是否还有空闲缓冲区生产资源&#xff0c;所以定义一个标志empty&#xff0c;初始值为最大可用资源数&#xff0c;在开头维护&#xff1b;同时&#xff0c;在消费者…

3-GPIO八大输出模式 推挽输出 与 开漏输出

推挽输出 与 开漏输出 GPIO有八大输出模式 下图为每个GPIO口的基本结构&#xff1a; 通过这张图来学习 最右侧是I/O引脚&#xff0c;是从STM32引脚到GPIO口的导线&#xff0c;与其他芯片进行连接的线。 芯片内部电路所能承受的电压有限&#xff0c;当未知的静电进入GPIO口&a…

selenium:Select类操作复选框和下拉框(7)

复选框/下拉框操作的Select类 主要使用selinium中的类Select来模拟选择网页上的下拉框或者复选框中的内容&#xff0c;使用前先导入 from selenium.webdriver.support.ui import Select 主要方法如下&#xff1a; 函数 功能 select_by_value 根据复选框/下拉框的值选择 se…

视觉检测系统实时识别工地安全帽佩戴情况

在建筑工地上&#xff0c;工人佩戴安全帽是确保施工安全的基本措施。然而&#xff0c;工人有时因疏忽或其他原因未能及时佩戴安全帽&#xff0c;这可能导致严重的安全隐患。传统的人工监督往往无法实现对工地的全覆盖或全天候监控&#xff0c;效率低下&#xff0c;容易出现漏检…

【GESP】C++一级练习BCQM3034,还是浮点数计算,国庆七天乐

一道又回到简单浮点数计算水平的题&#xff0c;巩固基本语法练习。 题解详见&#xff1a;https://www.coderli.com/gesp-1-bcqm3034/ 【GESP】C一级练习BCQM3034&#xff0c;还是浮点数计算&#xff0c;国庆七天乐 | OneCoder一道又回到简单浮点数计算水平的题&#xff0c;巩固…

SpringBoot+XXL-JOB:高效定时任务管理

前言 在现代应用程序中&#xff0c;定时任务是不可或缺的一部分。Spring Boot 和 XXL-Job 为你提供了一个强大的工具组合&#xff0c;以简化任务调度和管理。 本文将带领你探索如何将这两者集成在一起&#xff0c;实现高效的定时任务管理。无论你是初学者还是有经验的开发者&…

IDM6.42下载器!下载速度就像坐上了火箭,嗖嗖的快到飞起!

亲爱的朋友们&#xff0c;今天我要给大家安利一款下载神器——Internet Download Manager 6.42&#xff08;简称IDM&#xff09;&#xff01;这款软件简直就是下载界的“速度与激情”&#xff0c;用了它之后&#xff0c;你会发现下载速度就像坐上了火箭&#xff0c;嗖嗖的快到飞…

货车一键启动正确方法,新手司机可以看看,汽车,驾驶技巧

货车无钥匙进入一键启动手机联控等配置高到满足您对货车的所有期待 &#xff0c;由于霸气的外观和较高的配置&#xff0c;深受国内货车用户关注。 ‌货车一键启动手机控车是一种通过智能手机应用程序&#xff08;APP&#xff09;控制汽车启动和多种车辆功能的智能化系统。‌ 这…

手机怎么玩七龙珠电光炸裂0?GameViewer远程助你手机畅玩七龙珠

《七龙珠 电光炸裂&#xff01;ZERO》将于2024年10月11日上线&#xff01;你不仅可以在电脑上玩七龙珠电光炸裂0&#xff0c;而且手机也能免费玩这个电脑游戏&#xff0c;使用网易GameViewer远程就能让你随时随地玩七龙珠电光炸裂0。你还能享受4K蓝光144帧的高画质&#xff0c;…

攻防世界(CTF)~Reverse-easyRE1

题目介绍 下载附件后一个32位一个64位 64位的放到ExeinfoPE查看一下有无壳子&#xff08;无壳&#xff09; 放IDA看一下伪代码&#xff0c;习惯性看一下main函数&#xff0c;直接发现了flag flag{db2f62a36a018bce28e46d976e3f9864}

手动降级wsl中的numpy

下载完pytorch之后想验证一下cuda好不好使&#xff0c;在测试的时候发现一个warning python中报错如下 我下载的pytorch版本比较低&#xff0c;numpy太高&#xff0c;所以需要手动给numpy降级 pip install numpy\<2 降级后再进到python验证cuda就没有warning和报错了&…

一文读懂Spring Security的工作原理和应用(面试经)

导览 前言Spring Security必学必看1. 简介2. 架构2.1 认证2.2 授权 3. 对策 结语精彩回顾 前言 博主精心准备的一文读懂Spring系列文章&#xff0c;旨在通过简洁精炼的语言&#xff0c;展现Spring内部精妙的设计思想。我们知道Spring是一个web容器&#xff0c;不知道的同学&am…

无人机之穿越机飞行注意事项

一、选择合适的场地 1、寻找空旷、无障碍物的区域&#xff0c;如大型公园的空旷草坪、专门的无人飞行场地等。这样可以减少碰撞的风险&#xff0c;确保飞行安全。 2、避免在人群密集的地方飞行&#xff0c;防止对他人造成伤害。例如&#xff0c;不要在商场、学校、体育场等人…

【Linux第一弹】- 基本指令

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持…

在双十一必买的好物有哪些?盘点五大必买好物清单!

随着2024年双十一购物狂欢节的临近&#xff0c;消费者们正热切期待着这一年度盛事的到来。作为一年中最具影响力的购物节日之一&#xff0c;双十一不仅为消费者带来了前所未有的优惠力度&#xff0c;更是各大品牌展示新品、推广好物的绝佳时机&#xff0c;在众多商品中&#xf…

在spring生命周期中对bean方法进行增强

概述 开发中有时候需要对某个bean进行整体的加强&#xff0c;但是当前代码中有很多地方使用这个bean的不同方法&#xff1b;又不想同时修改这些地方留下修改记录 所以我的想法是在spring初始化bean过程中用自己的增强bean进行增强&#xff0c;不侵入业务代码&#xff1b; 整体…

基于SpringBoot+Vue+Uniapp微信小程序的电子竞技信息交流平台设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而…

模版进阶 非类型模版参数

一.模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成常量来使用。 #i…