1130 Infix Expression

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1130 Infix Expression相关的知识,希望对你有一定的参考价值。

考察:DFS进行中序遍历。

注意:给除了根节点以外的父节点加左右括号。

AC代码

#include<cstdio>
#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>
#include<cmath>
#include<queue>

using namespace std;

const int maxn = 21;

int n;

struct Node{
	string str;
	int lchild,rchild;
}node[maxn];

int vis[maxn] = {0};

int R;

int findRoot(){
	int root;
	for(int i=1;i<=n;i++){
		if(vis[i]==0){
			root = i;
			break;
		}
	}
	return root;
}

void DFS(int root){

	if(root==NULL)return;
	
	if(root!=R&&(node[root].lchild!=-1||node[root].rchild!=-1))printf("(");
	
	if(node[root].lchild!=-1)DFS(node[root].lchild);

	printf("%s",node[root].str.c_str());

	if(node[root].rchild!=-1)DFS(node[root].rchild);
	
	if(root!=R&&(node[root].lchild!=-1||node[root].rchild!=-1))printf(")");
	
	return;
}

int main(){
	
	cin>>n;
	for(int i=1;i<=n;i++){
		string str;
		int l,r;
		cin>>str>>l>>r;
		node[i].str = str;
		node[i].lchild = l;
		vis[l] = 1;
		node[i].rchild = r;
		vis[r] = 1;
	}
	
	R = findRoot();
	
	DFS(R);
	
	return 0;
}

以上是关于1130 Infix Expression的主要内容,如果未能解决你的问题,请参考以下文章

1130. Infix Expression (25)

PAT A1130 Infix Expression (25) [中序遍历]

1130 Infix Expression (25 分)难度: 一般 / 知识点: 中序遍历

PAT甲题题解-1130. Infix Expression (25)-中序遍历

如何在Postfix和Infix表示法中接受负值?

解决远程连接mysql错误1130代码的方法