1130 Infix Expression(25 分)

题目:

1130 Infix Expression(25 分)

大概描述:

语法树进行解析,实质进行二叉树进行前序遍历

特征词:

树的遍历

使用语言:

C++

解题思想:

利用所给的二叉树,进行前序遍历

题目得分:

25

提交次数:

1

时间

50

代码

#include<iostream>
#include<string>
#include<map>
#include<set>
using namespace std;
struct node{
 string v;
 int l;
 int r;
};

map<int,node> ns;
int st;
void post(int a){
 //cout << a;
 if(a == -1) return;
 if(ns[a].l != -1 || (ns[a].l == -1 && ns[a].r != -1))
 if(st != a)
 cout << "(";
 post(ns[a].l);
 cout << ns[a].v;
 post(ns[a].r);
 if(ns[a].r != -1 || (ns[a].r == -1 && ns[a].l != -1))
 if(st != a)
 cout << ")";
 return;
}
int main(){
 int a,b,c;
 string s;
 cin >> a;

 set<int> se;
 for(int i = 0;i < a;i++){
 cin >> s >> b >> c;
 ns[i + 1] = node{s,b,c};
 se.insert(b);
 se.insert(c);
 }
 for(int i = 1;i < a + 1;i++){
 if(se.find(i) == se.end())
 st = i;
 }
 post(st);
 return 0;
}

 成长

熟练的使用map + struct的组合。

发表评论

电子邮件地址不会被公开。 必填项已用*标注