题意
给出一棵中缀树
然后输出他的表达式
分析
一开始还想随便在输入点中任找一个点然后不断深搜建树
后来才发现这道题输入数据就把树根据指向关系已经建立好了
只需要确定根节点然后中序遍历就好了
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;
}