当前位置:网站首页>1162 Postfix Expression
1162 Postfix Expression
2022-06-30 07:26:00 【永远有多远.】
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 1 | Figure 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)%))+)题目大意
给定一个二叉表达式树,请你输出相应的后缀表达式,要求使用括号反映运算符的优先级
注意点
三种情况:
①左右孩子都不存在时 ,直接访问当前节点
②左右孩子都存在时 进行后序遍历 即:左->右->根
③左孩子不存在右孩子存在时,进行先序遍历即 :根->右
AC代码
/*
* @Author: Spare Lin
* @Project: AcWing2022
* @Date: 2022/6/28 14:28
* @Description: PAT (Advanced Level) 1162 Postfix Expression
*/
#include <iostream>
#include <algorithm>
using namespace std;
const int MAXN = 25;
typedef struct {
int l, r; //左右孩子
string v; //权值
} Node;
Node node[MAXN];
int n, root, flag[MAXN];
void dfs(int index) {
cout << '(';
//左右孩子都不存在 直接输出节点权值
if (node[index].l == -1 && node[index].r == -1) {
cout << node[index].v;
}
//左右孩子都存在 则进行后序遍历
else if (node[index].l != -1 && node[index].r != -1) {
dfs(node[index].l);
dfs(node[index].r);
cout << node[index].v;
}
//样例中的-作为负号时 进行先序遍历 即左孩子不存在 右孩子存在 先访问节点权值再访问右孩子
else {
cout << node[index].v;
dfs(node[index].r);
}
cout << ')';
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> node[i].v >> node[i].l >> node[i].r;
if (node[i].l != -1) flag[node[i].l] = 1; //当前结点左孩子是否存在
if (node[i].r != -1) flag[node[i].r] = 1; //当前结点右孩子是否存在
}
//遍历找根节点
for (int i = 1; i <= n; ++i) {
if (flag[i] == 0) {
root = i;
}
}
dfs(root);
return 0;
}
边栏推荐
- min_ max_ Gray operator understanding
- 深度学习——目标定位
- Proteus catalog component names and Chinese English cross reference table
- Final review -php learning notes 7-php and web page interaction
- February 14, 2022 [reading notes] - life science based on deep learning Chapter 2 Introduction to deep learning (Part 1)
- 深度学习——Bounding Box预测
- Armv8 (coretex-a53) debugging based on openocd and ft2232h
- Network, network card and IP configuration
- 期末复习-PHP学习笔记9-PHP会话控制
- Final review -php learning notes 1
猜你喜欢

At the age of 25, I started to work in the Tiankeng industry with buckets. After going through a lot of hardships to become a programmer, my spring finally came
![2021-10-29 [microbiology] qiime2 sample pretreatment form automation script](/img/4d/3a3d645a27c3561c3ebe20dcd8e142.jpg)
2021-10-29 [microbiology] qiime2 sample pretreatment form automation script

Simple application of generating function
![Arm debug interface (adiv5) analysis (I) introduction and implementation [continuous update]](/img/30/375860665aa1cc761adffc0e782744.jpg)
Arm debug interface (adiv5) analysis (I) introduction and implementation [continuous update]

Final review -php learning notes 8-mysql database

Multi whale capital: report on China's education intelligent hardware industry in 2022

回文子串、回文子序列

期末复习-PHP学习笔记8-mysql数据库

期末复习-PHP学习笔记6-字符串处理

Final review -php learning notes 4-php custom functions
随机推荐
Inversion Lemma
2021 China Enterprise Cloud index insight Report
Use of nested loops and output instances
Final review -php learning notes 6- string processing
期末复习-PHP学习笔记9-PHP会话控制
Proteus catalog component names and Chinese English cross reference
Efga design open source framework openlane series (I) development environment construction
Fishingprince Plays with Array
深度学习——卷积的滑动窗口实现
C language implementation of chain stack (without leading node)
National technology n32g45x series about timer timing cycle calculation
July 30, 2021 [wgs/gwas] - whole genome analysis process (Part I)
为什么大学毕业了还不知道干什么?
Similarities and differences of differential signal, common mode signal and single ended signal (2022.2.14)
Program acceleration
2022 retail industry strategy: three strategies for consumer goods gold digging (in depth)
Basic knowledge points
DS1302 digital tube clock
Basic operation command
Solve the linear equation of a specified point and a specified direction

