1130 Infix Expression

Posted kkmjy

tags:

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

题意:给出一个语法树(二叉树),输出相应的中缀表达式。

思路:很显然,通过中序遍历来做。通过观察,发现除了根结点之外的所有非叶结点的两侧都要输出括号,故在中序遍历时判断一下即可。

代码:

#include <cstdio>
#include <cstring>
struct Node{
    char data[15];
    int left,right;
}Tree[25];
int root=1;//根结点

void inOrderTraversal(int v)
{
    if(v!=-1){
        if(v!=root && (Tree[v].left!=-1 || Tree[v].right!=-1)) printf("(");
        inOrderTraversal(Tree[v].left);
        printf("%s",Tree[v].data);
        inOrderTraversal(Tree[v].right);
        if(v!=root && (Tree[v].left!=-1 || Tree[v].right!=-1)) printf(")");
    }
}

int main()
{
    bool isRoot[25];
    memset(isRoot,true,sizeof(isRoot));
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%s %d %d",Tree[i].data,&Tree[i].left,&Tree[i].right);
        if(Tree[i].left!=-1) isRoot[Tree[i].left]=false;
        if(Tree[i].right!=-1) isRoot[Tree[i].right]=false;
    }
    while(isRoot[root]==false) root++;
    inOrderTraversal(root);
    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代码的方法