PAT(A)-1130. Infix Expression (25)(树的中序遍历)
来源:互联网 发布:星际皆知你爱我微盘 编辑:程序博客网 时间:2024/06/06 02:29
记录一个菜逼的成长。。
题目链接
题目大意:
给你n个点的值以及左右孩子编号。
输出表达式。
遍历的时候,如果是叶子节点的就不需要给左右括号
输出的时候去掉最外面的一对括号。
注意n==1的情况
#include <bits/stdc++.h> using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define clr clear()#define pb push_backconst int maxn = 1500000 + 10;struct Node{ int l,r;}tree[maxn];int d[100];string str[100];vector<string>ans;void in_tra(int t){ if(t == -1)return ; if(tree[t].l != -1 || tree[t].r != -1)ans.pb("("); in_tra(tree[t].l); ans.pb(str[t]); in_tra(tree[t].r); if(tree[t].l != -1 || tree[t].r != -1)ans.pb(")");}int main(){ int n; while(~scanf("%d",&n)){ for( int i = 1; i <= n; i++ ){ string ch; int u,v; cin>>ch; scanf("%d%d",&u,&v); str[i] = ch; if(u != -1)d[u]++; if(v != -1)d[v]++; tree[i].l = u,tree[i].r = v; } if(n == 1){ cout<<str[1]<<endl; continue; } int root ; for( int i = 1; i <= n; i++ ){ if(!d[i]){root = i;break;} } in_tra(root); for( int i = 1; i < ans.size()-1; i++ ) cout<<ans[i]; puts(""); } return 0;}
0 0
- PAT(A)-1130. Infix Expression (25)(树的中序遍历)
- PAT 1130. Infix Expression (25) 前缀表达式、树的中序遍历
- 1130. Infix Expression (25)[dfs-中序遍历]
- PAT 1130. Infix Expression (25)
- PAT 1130. Infix Expression (25)
- PAT 1130. Infix Expression (25)-甲级
- PAT甲级 1130. Infix Expression (25)
- 【PAT】【Advanced Level】1130. Infix Expression (25)
- PAT 甲级 1130. Infix Expression (25)
- PAT A1130. Infix Expression (25)
- 1130. Infix Expression (25)
- 1130. Infix Expression (25)
- 1130. Infix Expression (25)
- 1130. Infix Expression (25)
- 1130. Infix Expression (25)
- 1130. Infix Expression (25)
- 1130. Infix Expression (25)
- PAT--1130. Infix Expression(中序加括号)
- 让ffmpeg支持输出h264格式
- SOJ 1038
- zookeeper 环境搭建
- centos7 编译安装mysql5.7+
- [leetcode]162. Find Peak Element
- PAT(A)-1130. Infix Expression (25)(树的中序遍历)
- MulticastSocket 广播学习
- Activity四种启动模式
- java 进程和线程的理解
- Android中定时器的3种实现方法
- spark pipeline原理学习和记录
- [leetcode]53. Maximum Subarray
- [ZETCODE]wxWidgets教程五:布局管理
- ChemDrew如何翻转化学结构