PAT Advanced Level 1162 Postfix Expression(25)

题目链接🔗
需要注意的一点是:并不是单纯的后序遍历就可以了。由于是要打印后缀表达式,所以如果一个结点没有左孩子,那就要先打印该节点的值。
例如3+4这个表达式是中序表达式,写成后序表达式就是34+,这样写是因为+是一个二元运算符,3和4是它的两个操作数。但是对于-3-就变成了一元操作符,因此需要在3前面打印出来。
代码如下(非递归后序遍历):

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <string.h>
using namespace std;
#define N 25
int n,root;
struct node{
char data[15];
int lch=-1,rch=-1;
bool isPrinted=false;
}tree[N];
bool v[N];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
char data[15];
int lch,rch;
scanf("%s%d%d",data,&lch,&rch);
node tmp;
strcpy(tmp.data,data);
tmp.lch=lch,tmp.rch=rch;
tree[i]=tmp;
v[lch]=v[rch]=true;
}
for(int i=1;i<=n;++i)
if(!v[i]){
root=i;
break;
}
stack<int>st;
int lastVisit=root;
while(root!=-1||!st.empty()){
if(root!=-1){
st.push(root);
printf("(");
if(tree[root].lch==-1){
printf("%s",tree[root].data);
tree[root].isPrinted=true;
}
root=tree[root].lch;
}else{
root=st.top();
if(tree[root].rch==-1||tree[root].rch==lastVisit){
if(!tree[root].isPrinted) printf("%s",tree[root].data);
printf(")");
st.pop();
lastVisit=root;
root=-1;
}else{
root=tree[root].rch;
}
}
}
return 0;
}

本文作者:Ryomk

本文链接:https://www.cnblogs.com/preccrep/p/16339621.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Ryomk  阅读(45)  评论(0编辑  收藏  举报
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.

作曲 : Reol

作词 : Reol

fade away...do over again...

fade away...do over again...

歌い始めの一文字目 いつも迷ってる

歌い始めの一文字目 いつも迷ってる

どうせとりとめのないことだけど

伝わらなきゃもっと意味がない

どうしたってこんなに複雑なのに

どうしたってこんなに複雑なのに

噛み砕いてやらなきゃ伝わらない

ほら結局歌詞なんかどうだっていい

僕の音楽なんかこの世になくたっていいんだよ

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.

目の前 広がる現実世界がまた歪んだ

目の前 広がる現実世界がまた歪んだ

何度リセットしても

僕は僕以外の誰かには生まれ変われない

「そんなの知ってるよ」

気になるあの子の噂話も

シニカル標的は次の速報

麻痺しちゃってるこっからエスケープ

麻痺しちゃってるこっからエスケープ

遠く遠くまで行けるよ

安定なんてない 不安定な世界

安定なんてない 不安定な世界

安定なんてない きっと明日には忘れるよ

fade away...do over again...

fade away...do over again...

そうだ世界はどこかがいつも嘘くさい

そうだ世界はどこかがいつも嘘くさい

綺麗事だけじゃ大事な人たちすら守れない

くだらない 僕らみんなどこか狂ってるみたい

本当のことなんか全部神様も知らない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

僕は気にしない 君は気付かない

何処にももういないいない

Everybody don't know why.

Everybody don't know why.

Everybody don't know much.

忘れていく 忘れられていく

We don't know,We don't know.