比赛场次 658
比赛名称 板子大赛
比赛状态 已结束比赛成绩
开始时间 2025-01-22 08:00:00
结束时间 2025-01-22 17:00:00
开放分组 全部用户
注释介绍 都是板子,AK吧!
题目名称 表达式树
输入输出 expr_tree.in/out
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试点数 10 简单对比
用户 结果 时间 内存 得分
Gravatar李金泽 AAAAAAAAAA 0.015 s 1.56 MiB 100
Gravatar喵喵喵 AAAAAAAAAA 0.030 s 3.33 MiB 100
Gravatarxxz AAAAAAAAAA 0.030 s 3.41 MiB 100
GravatarAeeE5x AAAAAAAAAA 0.030 s 3.52 MiB 100
Gravatarzqy AAAAAAAAAA 0.033 s 3.50 MiB 100
GravatarTeaWine AATAAAAAAA 2.026 s 3.27 MiB 90

表达式树

★★   输入文件:expr_tree.in   输出文件:expr_tree.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】

中缀表达式可以转化为一棵由运算符和运算数构成的二叉树。

例如,中缀表达式9/3+6*(8-3)可以转化为如下二叉树:

通过观察可以发现,操作数都在叶子结点中,操作符在内部结点中。

表达式树的后序遍历就是后缀表达式,在对子树进行后序遍历后,直接用根结点的运算符对左右子树的结果进行运算即可得出表达式的值。

现在给定一棵二叉树,请你求出对应表达式的值。

【输入格式】

输入包含若干行。

第一行一个整数$n(2\leq n\leq 50)$,表示操作数的个数。

第一行$n$个整数,表示$n$个操作数(叶子结点),它们在二叉树的结点编号分别为$1$到$n$。

接下来$n-1$行,表示$n-1$个操作符,它们在二叉树中的结点编号分别为$n+1$到$2n-1$。

每行首先输入一个运算符(+-*/),然后输入两个整数分别表示左孩子和右孩子的编号。

对于除法运算,使用整除。

【输出格式】

一行一个整数,表示表达式的值(输入保证运算中间和最后结果不超过int)。

【样例输入】

5
9 3 6 8 3
/ 1 2
+ 6 8
* 3 9
- 4 5

【样例输出】

33

【样例解释】

输入数据建立的表达式树如下