1130 Infix Expression (25分)

#include<cstdio>
#include<vector>
#include<string>
using namespace std;
int n;
struct node{
    
    
	char data[12];
	int left, right;
}m[30];
bool have[30];
vector<string> res;
void DFS(int index)
{
    
    
	if(index == -1)
	return;
	if(m[index].left != -1 || m[index].right != -1)
	res.push_back("(");
	DFS(m[index].left);
	res.push_back(m[index].data);
	DFS(m[index].right);
	if(m[index].left != -1 || m[index].right != -1)
	res.push_back(")");
}
int main()
{
    
    
	scanf("%d", &n);
	for(int i = 1; i <= n; i++)
	{
    
    
		scanf("%s%d%d", m[i].data, &m[i].left, &m[i].right);
		have[m[i].left]++;
		have[m[i].right]++;
	}
	int root = 1;
	for(int i = 1; i <= n; i++)
	if(have[i] == 0)
	{
    
    
		root = i;
		break;
	}
	DFS(root);
	if(res[0] == "(")
	for(int i = 1; i < res.size()-1; i++)
	printf("%s", res[i].c_str());
	else
	for(int i = 0; i < res.size(); i++)
	printf("%s", res[i].c_str());
}

猜你喜欢

转载自blog.csdn.net/weixin_45486992/article/details/107244567