当前位置:网站首页>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;
}
边栏推荐
- Cross compile opencv3.4 download cross compile tool chain and compile (3)
- Fishingprince Plays with Array
- Calculate Euler angle according to rotation matrix R yaw, pitch, roll source code
- Application of stack -- using stack to realize bracket matching (C language implementation)
- 深度学习——BRNN和DRNN
- Basic theory of four elements and its application
- Implementation of binary search in C language
- Armv8 (coretex-a53) debugging based on openocd and ft2232h
- STM32 infrared communication 3 brief
- Pre ++ and post ++ overloads
猜你喜欢

期末複習-PHP學習筆記6-字符串處理

Personal blog one article multi post tutorial - basic usage of openwriter management tool

Combinatorial mathematics Chapter 2 Notes

Binary tree related operations (based on recursion, implemented in C language)
![February 14, 2022 [reading notes] - life science based on deep learning Chapter 2 Introduction to deep learning (Part 1)](/img/ff/e4df5a66cda74ee0d71015b7d1a462.jpg)
February 14, 2022 [reading notes] - life science based on deep learning Chapter 2 Introduction to deep learning (Part 1)

Three software installation methods

Final review -php learning notes 6- string processing

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

Efga design open source framework fabulous series (I) establishment of development environment

深度学习——语言模型和序列生成
随机推荐
Simple application of generating function -- integer splitting 2
NMOS model selection
Self study notes -- use of 74h573
Personal blog one article multi post tutorial - basic usage of openwriter management tool
Final review -php learning notes 11-php-pdo database abstraction layer
深度学习——残差网络ResNets
Analysis of cross clock transmission in tinyriscv
Introduction notes to pytorch deep learning (10) neural network convolution layer
C language implementation sequence stack
Processes, jobs, and services
DXP software uses shortcut keys
Parameter calculation of deep learning convolution neural network
Implementation of double linked list in C language
STM32 infrared communication 3 brief
C language implementation of chain stack (without leading node)
【花雕体验】14 行空板pinpong库测试外接传感器模块(之一)
C. Fishingprince Plays With Array
STM32 control LED lamp
深度学习——词汇表征
期末复习-PHP学习笔记4-PHP自定义函数

