#include<bits/stdc++.h>
using namespace std;
//输出中缀表达式,这题就是树的中序遍历,难点在于括号的输出: 非根节点非叶子节点的,在开始访问时有"(" 结束访问时有 ")"
struct node
{
string data;
int left;
int right;
}tree[25];
int vis[25],root;
void InOrder(int v)
{
if(v!=-1)
{
if(v!=root && (tree[v].left!=-1 || tree[v].right!=-1)) //只要不是根节点 或者 叶子节点 就需要加括号
cout<<"(";
InOrder(tree[v].left);
cout<<tree[v].data;
InOrder(tree[v].right);
if(v!=root && (tree[v].left!=-1 || tree[v].right!=-1)) //只要不是根节点 或者 叶子节点 就需要加括号
cout<<")";
}
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>tree[i].data>>tree[i].left>>tree[i].right;
vis[tree[i].left]=1;
vis[tree[i].right]=1;
}
for(int i=1;i<=n;i++)
{
if(vis[i]==0)
{
root=i ;
break;
}
}
InOrder(root);
return 0;
}
08-02
1099
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-04
2664
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)