当前位置:网站首页>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;
}
边栏推荐
- 25岁,从天坑行业提桶跑路,在经历千辛万苦转行程序员,属于我的春天终于来了
- November 22, 2021 [reading notes] - bioinformatics and functional genomics (Chapter 5, section 4, hidden Markov model)
- Efga design open source framework fabulous series (I) establishment of development environment
- DS1302 digital tube clock
- 2021 private equity fund market report (62 pages)
- Line fitting (least square method)
- Final review -php learning notes 5-php array
- Global digital industry strategy and policy observation in 2021 (China Academy of ICT)
- 深度学习——使用词嵌入and词嵌入特征
- Simple application of generating function
猜你喜欢

C language - student achievement management system

Combinatorial mathematics Chapter 1 Notes

Digital white paper on total cost management in chain operation industry

Inversion Lemma

Final review -php learning notes 6- string processing

String application -- string violent matching (implemented in C language)

Application of stack -- using stack to realize bracket matching (C language implementation)

Three software installation methods
![November 9, 2020 [wgs/gwas] - whole genome analysis (association analysis) process (Part 2)](/img/21/ad74700921ee0ef7a1525dd7db0683.jpg)
November 9, 2020 [wgs/gwas] - whole genome analysis (association analysis) process (Part 2)

Installation software operation manual (continuous update)
随机推荐
STM32 infrared communication 2
STM32 control LED lamp
342 maps covering exquisite knowledge, one of which is classic and pasted on the wall
STM32 register
Final review -php learning notes 5-php array
Multi whale capital: report on China's education intelligent hardware industry in 2022
Quick placement of devices by module in Ad
C. Fishingprince Plays With Array
期末複習-PHP學習筆記6-字符串處理
Xiashuo think tank: 28 updates of the planet reported today (including the information of flirting with girls and Han Tuo on Valentine's day)
Processes, jobs, and services
Simple application of generating function -- integer splitting 2
Stepper motor
Xiashuo think tank: 50 planet updates reported today (including the global architects Summit Series)
Introduction notes to pytorch deep learning (XII) neural network - nonlinear activation
Final review -php learning notes 3-php process control statement
期末复习-PHP学习笔记1
Distance from point to line
Permutation and combination of probability
Efga design open source framework fabulous series (I) establishment of development environment

