PAT甲级 1130 Infix Expression 抽象语法树AST

PAT甲级 1130 Infix Expression 抽象语法树AST_第1张图片
PAT甲级 1130 Infix Expression 抽象语法树AST_第2张图片
PAT甲级 1130 Infix Expression 抽象语法树AST_第3张图片

代码如下:

//抽象语法树AST
#include
#include
#include
using namespace std;

struct tree{
     
    string key;
    int left,right;
};

vector<tree> t;
int n;
string res="";
int flag[30]={
     0};
int Root;

void inorder(int root){
     
    if(root==-1){
     
        return;
    }
    if(root!=Root&&(t[root].left!=-1||t[root].right!=-1)){
     
        cout <<"(";
    }
    inorder(t[root].left);
    cout<<t[root].key;
    inorder(t[root].right);
	if(root!=Root&&(t[root].left!=-1||t[root].right!=-1)){
     
        cout << ")";
	}
}

int main(){
     
    cin>>n;
    t.resize(n+1);
    for(int i=1;i<=n;i++){
     
        cin>>t[i].key>>t[i].left>>t[i].right;
        if(t[i].left!=0){
     
            flag[t[i].left]=1;
        }
        if(t[i].right!=0){
     
            flag[t[i].right]=1;
        }
    }

    for(int i=1;i<=n;i++){
     
        if(flag[i]==0){
     
            Root=i;
        }
    }

    inorder(Root);
    cout<<res;
}

你可能感兴趣的:(PAT,树,PAT甲级)