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的主要内容,如果未能解决你的问题,请参考以下文章
PAT A1130 Infix Expression (25) [中序遍历]
1130 Infix Expression (25 分)难度: 一般 / 知识点: 中序遍历