1162 Postfix Expression(29行+超详细注释)

news2025/1/11 18:44:59

分数 25

全屏浏览题目

切换布局

作者 陈越

单位 浙江大学

Given a syntax tree (binary), you are supposed to output the corresponding postfix expression, with parentheses reflecting the precedences of the operators.

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤ 20) which is the total number of nodes in the syntax tree. Then N lines follow, each gives the information of a node (the i-th line corresponds to the i-th node) in the format:

data left_child right_child

where data is a string of no more than 10 characters, left_child and right_child are the indices of this node's left and right children, respectively. The nodes are indexed from 1 to N. The NULL link is represented by −1. The figures 1 and 2 correspond to the samples 1 and 2, respectively.

Figure 1Figure 2

 

Output Specification:

For each case, print in a line the postfix expression, with parentheses reflecting the precedences of the operators.There must be no space between any symbols.

Sample Input 1:

8
* 8 7
a -1 -1
* 4 1
+ 2 5
b -1 -1
d -1 -1
- -1 6
c -1 -1

Sample Output 1:

(((a)(b)+)((c)(-(d))*)*)

Sample Input 2:

8
2.35 -1 -1
* 6 1
- -1 4
% 7 8
+ 2 3
a -1 -1
str -1 -1
871 -1 -1

Sample Output 2:

(((a)(2.35)*)(-((str)(871)%))+)

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

 注意:其中+,-两个符号既可以表示加减也可以表示正负,当表示正负的时候该节点一定是没有左孩子的

#include<bits/stdc++.h>
using namespace std;
const int N=25;
int n,l[N],r[N],exist[N];
string w[N];
string post(int u){
    string left,right;
    if(l[u]==-1&&r[u]==-1)return w[u];//若是根结点则返回该结点符号 
    if(l[u]!=-1&&r[u]!=-1){//若左右孩子都有 
        left="("+post(l[u])+")";//记录左子树及加上对应括号 
        right="("+post(r[u])+")";//记录右子树及加上对应的括号 
        return left+right+w[u];//返回左孩子,右孩子和该节点的符号 
    }
    else if(w[u]=="-"||w[u]=="+"&&l[u]==-1){//若该节点是+,-两个符号且没有左孩子,说明两个符号表示正负 
        right="("+post(r[u])+")";//只用遍历右子树并记录即可 
        return w[u]+right;//返回该符号和右子树 
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>w[i]>>l[i]>>r[i];
        exist[l[i]]=exist[r[i]]=1;//记录出现过的结点 
    }
    int root;
    for(int i=1;i<=n;i++)if(!exist[i])root=i;//没出现的结点是根结点 
    cout<<"("+post(root)+")";
    return 0;

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

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

相关文章

scalar3 idea导入源码后仍然无法显示源码问题解决

最近心血来潮想要学习scala&#xff0c;直接选了最新的scala3.2.2&#xff0c;安装过程没啥好说的但是到了看源码的时候却死活加载不进去&#xff0c;话不多说&#xff0c;先看看网上大部分人给的过程&#xff08;这个过程也是导入源码必须的&#xff09; 1、进入scala官网选择…

Node.js详解(三):Node.js的安装及基本使用

文章目录 一、Node.js 安装配置二、nvm介绍及使用(推荐使用node版本管理工具)1、介绍2、安装3、基本使用安装/管理nodejs4、命令提示 三、第一个Node.js程序&#xff1a;Hello World&#xff01;脚本模式交互模式 一、Node.js 安装配置 Node.js支持在 Windows 、Linux以及在Ma…

数据为基 成峰化海 | GBASE南大通用openGauss Developer Day 2023精彩看点一览

5月26日&#xff0c;面向数据库开发者的年度技术盛会 「openGauss Developer Day 2023」 在北京圆满召开。本届大会以“聚数成峰&#xff0c;共赢未来”为主题&#xff0c;汇集产学研用各层面技术专家、企业领军&#xff0c;分享openGauss社区前沿技术创新、优秀实践和生态成…

今天穿什么香?小红书气味人群和热门趋势分析

“高倍速增长”&#xff0c;近年嗅觉赛道趋势有目共睹&#xff0c;可谓当下一大新势力。 “小众香”、“伪体香”、“人间扳手香”等&#xff0c;频现小红书热门词条&#xff0c;行业巨头入局、诸多新秀崛起&#xff0c;前景美丽。本期千瓜将通过气味人群和热门趋势分析&#x…

nginx限流熔断

一、令牌桶算法 算法思想是&#xff1a; 令牌以固定速率产生&#xff0c;并缓存到令牌桶中&#xff1b; 令牌桶放满时&#xff0c;多余的令牌被丢弃&#xff1b; 请求要消耗等比例的令牌才能被处理&#xff1b; 令牌不够时&#xff0c;请求被缓存。 二、漏桶算法 算法思想…

fengmap地图上小图标缺失

目录 一、问题 二、原因 三、总结 一、问题 1.使用蜂鸟地图&#xff0c;发现在线地图能够正常加载地图编辑器中绘制的小图标&#xff1b;但是离线地图中的小图标却无法正常显示。如下图1-1所示。 二、原因 1.不明白呀,network检查了&#xff0c;离线和在线加载的资源也是一…

使用docker部署多个nginx站点并配置负载均衡

项目前端部署在docker。该前端有时会出现无法访问&#xff0c;重启docker容器后又可以。猜测是不是单个docker容器压力过大&#xff0c;就想引入负载均衡试试效果。 一、负载均衡的好处 负载均衡跟集群结合效果才好&#xff0c;docker容器分布于不同的服务器。但我们没有这个…

Vue.js 中的 Vuex 是什么?如何使用 Vuex?

Vue.js 中的 Vuex 是什么&#xff1f;如何使用 Vuex&#xff1f; 在 Vue.js 中&#xff0c;Vuex 是一种状态管理模式。它可以帮助我们在应用程序中管理共享状态&#xff0c;使得我们的代码更加可维护和可扩展。本文将深入探讨 Vuex 的概念和使用方法&#xff0c;并提供一些相关…

基于DAC0832的信号发生器设计与实现(源码+原理图+PCB)

摘要&#xff1a; 本课题设计了一个基于DAC0832的信号发生器&#xff0c;使之输出不同频率的正弦波、三角波、锯齿波和方波&#xff0c;并通过按键切换不同的波形&#xff0c;也可以改变频率以及频率变化的步进。本方案选择了DAC0832作为核心芯片&#xff0c;并与51单片机结合…

nginx系统优化

nginx系统优化 一&#xff1a;隐藏nginx版本号 方法一&#xff1a;修改配置文件 vim /usr/local/nginx/conf/nginx.confnginx -t systemctl restart nginx curl -I http://192.168.52.108方法二&#xff1a;修改源代码 vim /opt/nginx-1.24.0/src/core/nginx.h ##配置文件里…

Redis面试-高频常考30题(面试突击,建议收藏)

1.BigKey问题&#xff0c;多大算big?你如何发现?如何删除?如何处理? 关于bigkey的面试题&#xff0c;已经在博客 Redis7实战加面试题-高阶篇&#xff08;Redis线程与IO多路复用&#xff0c;BigKey&#xff0c;缓存双写&#xff09; 里详细说明 2.手机登录某App&#xff0…

接口测试用例怎么写?一文1600字教你写一个优秀的接口测试的测试用例

一、用例设计1 1、接口测试概念 接口测试&#xff1a;测试系统间接口的一种测试&#xff0c;测试的对象主要是接口&#xff0c;主要是测试外部系统与所测系统之间以及内部系统之间的交互点 2、接口测试方法 a、可以通过开发脚本代码进行测试 b、可以通过开源免费的接口调用…

使用HHDBCS的SSH通道登陆数据库

传统远程登录或文件传输方式&#xff0c;例如Telnet、FTP&#xff0c;使用明文传输数据&#xff0c;存在很多的安全隐患。 随着人们对网络安全的重视&#xff0c;SSH协议已经越来越被用户所青睐。 SSH协议通过对网络数据进行加密和验证&#xff0c;在不安全的网络环境中提供了…

Spring Cloud Alibaba 快速上手搭建公司项目(三)GateWay

Gateway是Spring Cloud生态系统中的一个组件&#xff0c;它是一个基于Spring Cloud Gateway的API网关。它提供了一种简单、快速和可扩展的方式来管理微服务之间的请求流量。 它是一个轻量级的API网关&#xff0c;它可以轻松地与Spring Cloud集成&#xff0c;并提供了一些高级功…

你是外包,麻烦不要偷吃零食,注意素质..

我自己没经历过外包&#xff0c;靠自己的所见所闻可能写出来的东西会很主观&#xff0c;所幸我有不少外包的读者&#xff0c;还有几个在外包工作或工作过的朋友&#xff0c;在跟她们深度交流之后&#xff0c;这这里聊一下我自己的一些看法。 注&#xff1a;本文不代表所有外包公…

libtorch教程(一)开发环境搭建:VS+libtorch和Qt+libtorch

前言 事实上&#xff0c;在前面的pytorch部署博客和libtorch的QT部署中笔者已经分享了自己搭建libtorch开发环境的记录。其余并无太多要赘述的。 本教程禁止转载。同时&#xff0c;本教程来自知识星球【CV技术指南】更多技术教程&#xff0c;可加入星球学习。 Transformer、目…

苹果CMS仿T5资源站影视资源分享网站模板

简介&#xff1a; 苹果cms仿T5资源站影视资源分享网站模板&#xff0c;包括首页、详情页、留言页、和播放弹窗&#xff01;适合拿去做资源站&#xff01; 云盘地址&#xff1a; http://zijieyunpan.cn/eF3crCQyWVO 演示&#xff1a;

Android Input子系统 - PhoneWindowManager

基本概念 PhoneWindowManager也是运行于systemserver线程中,在Event事件分发之前处理,比如电源键。Event事件分发后,仅有包含Activity的apk线程才可以处理,如果apk中没有activity但是想处理Event事件怎么办呢?可以在PhoneWindowManager做做文章了。 在SystemServer中, inputM…

数影周报:免费VPN泄露3.6亿条数据,句子互动获数百万美融资

本周看点&#xff1a;免费VPN泄露3.6亿条用户数据&#xff1b;推特信任与安全主管宣布辞职&#xff1b;宣亚国际宣布推出OrangeGPT&#xff1b;亚马逊日本将在关东地区开设两个新物流中心&#xff1b;句子互动完成数百万美元Pre-A轮融资...... 数据安全那些事 免费VPN泄露3.6亿…

黑客松必备|Bear Necessities Hackathon赞助商Workshop汇总

由Moonbeam和AWS Startups联合主办的Bear Necessities Hackathon黑客松启动仪式于5月30日举行。本次黑客松将历时约1个月的时间&#xff0c;包含6个挑战&#xff0c;分别由Moonbeam基金会、Chainlink、StellaSwap、SubQuery、Biconomy提供赞助&#xff0c;总奖池超过5万美金。了…