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)-中序遍历

1130 Infix Expression

1130 Infix Expression

Kotlin 中infix,inline,noinline,crossinline ,refied 等的理解

Infix expressions 中缀表达式