题意
给出一棵中缀树
然后输出他的表达式
分析
一开始还想随便在输入点中任找一个点然后不断深搜建树
后来才发现这道题输入数据就把树根据指向关系已经建立好了
只需要确定根节点然后中序遍历就好了
code
#include<bits/stdc++.h>
using namespace std;
bool bok[22];
struct node{string val;int l,r;
}cas[30];
int rt;
void dfs(int r){if(r!=rt&&(cas[r].l!=-1||cas[r].r!=-1))//输出括号条件cout<<"(";if(cas[r].l!=-1){dfs(cas[r].l);}cout<<cas[r].val;if(cas[r].r!=-1){dfs(cas[r].r);if(r!=rt)cout<<")"; }
}
int main()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>cas[i].val>>cas[i].l>>cas[i].r; if(cas[i].l!=-1)bok[cas[i].l]=1;if(cas[i].r!=-1)bok[cas[i].r]=1;} for(int i=1;i<=n;i++){if(!bok[i]){rt=i;dfs(i);break;}} return 0;
}