1130 Infix Expression (25 分)难度: 一般 / 知识点: 中序遍历
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1130 Infix Expression (25 分)难度: 一般 / 知识点: 中序遍历相关的知识,希望对你有一定的参考价值。
https://pintia.cn/problem-sets/994805342720868352/problems/994805347921805312
通过入度0找到根节点,然后中序遍历。
#include<bits/stdc++.h>
using namespace std;
unordered_map<int,int>l,r;
int n,d[25];
string val[25];
string s;
void dfs(int u)
if(u==-1) return;
if(!(l[u]==-1&&r[u]==-1)) s+="(";
if(l[u]!=-1) dfs(l[u]);
s+=val[u];
if(r[u]!=-1) dfs(r[u]);
if(!(l[u]==-1&&r[u]==-1)) s+=")";
int main(void)
cin>>n;
for(int i=1;i<=n;i++)
cin>>val[i];
int a,b; cin>>a>>b;
l[i]=a,r[i]=b;
if(a!=-1) d[a]++;
if(b!=-1) d[b]++;
int root=0;
for(int i=1;i<=n;i++) if(!d[i]) root=i;
dfs(l[root]);
s+=val[root];
dfs(r[root]);
cout<<s;
return 0;
以上是关于1130 Infix Expression (25 分)难度: 一般 / 知识点: 中序遍历的主要内容,如果未能解决你的问题,请参考以下文章
1130 Infix Expression (25 分)难度: 一般 / 知识点: 中序遍历
PAT甲题题解-1130. Infix Expression (25)-中序遍历