這道題在輸出上太坑了,畫出來不像樹...
1 #include2 #include3 #include4using
namespace
std;
5int val[26
],n,len,ans,maxdep;
6char infix[55],postfix[55],out[50][300];7
struct
node
13 }*root;
14//
計算a^b
15int pow(int a,int
b)21
//將中綴轉化為字尾表示式
22void infixtopost(char *s)
34if(!s.empty()) s.pop();35}
36else
41s.push(s[j]);42}
43}44while(!s.empty())
48 postfix[i]=0
;49 len=i; //
把len設定為postfix的長度 50}
51//
根據建的樹求值
52int cal(node *cur)61}
62}63//
找到樹的高度
64int finddep(node *cur)
70//
將要列印的內容輸出到out中
71void print(node *cur,int x,int y,int
space)
77if(cur->r)81}
82//
列印樹
83void
printtree()91}
92//
建樹 93
void
build()
102s.push(t);
103}
104 root=s.top();s.pop();
105}
106int
main()
107116 infixtopost(infix); //
中綴轉字尾
117 cout118 build(); //
根據字尾建樹
119 ans=cal(root); //
計算值
120 maxdep=finddep(root); //
得到最大深度
121 memset(out,'
',sizeof(out
));122
//注意到根結點一定是在第一行的2^(maxdep-1)-1的下標位置(別問為什麼,因為你看輸出出來就是這麼詭異),
123//
也就是位於中間的位置,再根據當前層數判斷葉子結點放的位置(print函式中)
124int y=pow(2,maxdep-1)-1; //
根結點在y上的座標
125 print(root,0,y,y+1>>1); //
形成樹形圖
126printtree();
127 cout<128 }
表示式 表示式樹 表示式求值
總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入輸入分...
表示式求值問題之表示式樹
include include include include define m 1005 define clr arr,now memset arr,now,sizeof arr using namespace std stackshu typedef struct node tire,t cha...
表示式求值與字尾表示式
乙個算術表示式,含有數字 為簡化處理,數字只有一位 運算子 以及括號,求表示式的值。給出的表示式是一般我們見到的中綴表示式,即運算子位於運算元之間。如果把中綴表示式轉化為字尾表示式,那麼對字尾表示式求值將會很方便。字尾表示式特點 1.操作符位於運算元之後 2.沒有括號 3.運算子沒有優先順序。中綴表...