演算法分析:
該演算法將字尾表示式轉變成表示式樹。由於我們已經有了將中綴表示式
轉變成字尾表示式的演算法,因此可以從這兩種輸入表示式生成表示式樹。所
描述的方法類似於字尾表示式求值的演算法。我們一次乙個符號的讀入表示式
。如果符號是運算元,那麼就建立乙個單結點樹並將它推入棧中。如果符號
是操作符,他的左、右兒子分別是t1和t2。然後將指向這棵樹的指標壓入棧
中。例如輸入123*+,將會得到相應的表示式+1*23、1+2*3、12*3+。
個人小結及心得:
在本程式的編寫過程中,遇到的最大問題當然表示式樹的
建立。對於treenode這個結構體,以及new的使用給我帶來了許
多大的麻煩。treenode p1,treenode* p1,treenode* &p1有時讓
我覺得手足無措,好在經過好多次的debug之後,程式才勉強可
以執行,同時對上述三個型別有了更好的理解。
另外,本程式的侷限在於在表示式的讀入過程中,讀入的
表示式必須為字尾表示式,以及相應的字元必須為數字,如果
不能滿足這兩個條件則程式不能執行。其次,本程式利用遞迴
的思想遍歷該樹,也對程式的執行速度不能保證。另外,由於
本人水平有限,在遍歷樹的過程中不會生成樹的樣子,暫且就
先這樣,不過在之後的學習中,我相信其一定難不倒我。
**實現:
#include #include#includeusing namespace std;
struct treenode
};void construct_tree(const string& str,stack&st)
else
}}void preorder(treenode* &t)//先序遍歷
else
cout<<"";
}void inorder(treenode* &t)//中序遍歷
else
cout<<"";
} void postorder(treenode* &t)//後序遍歷
else
cout<<"";
}int main()
{ stacktree_stack;
cout<<"please input the postfix equation(比如123*+,不可讀入字母)"<
一棵受傷的樹
有乙個農場主為了方便拴牛,在莊園的一棵榆樹上箍了乙個鐵圈。隨著榆樹的長大,鐵圈慢慢嵌進了樹身,榆樹的表皮留下一道深深的傷痕。有一年,當地發生了一種奇怪的植物真菌疫病,方圓幾十公里的榆樹全部死亡,唯獨那顆箍了鐵圈的榆樹卻存活下來。為什麼這棵榆樹能倖存呢?植物學家對此產生了興趣,於是組織人員進行研究。結...
一棵樹是否為另一棵樹的子結構
輸入兩顆二叉樹a,b,判斷b是不是a的子結構。問題描述 給定兩個二叉樹的根節點,判斷第二樹是否是第乙個樹的子樹,如果是返回1,否則返回0.拿第二個樹的每個節點去和第乙個樹做匹配,如果某個節點匹配成功,就接著往下匹配,否則重新從第二個樹的的根節點開始。注意區別 測試用例 樹1 42 6 1 3 5 7...
一棵樹 拓展活動
昨天我們部門去一棵樹休閒農莊進行了一次拓展活動,五十來人都穿著迷彩服,呵,活像一群逃兵,逃脫生活工作的壓力的逃兵 相較於以前的活動,這次活動對我來說收穫還是挺大的。我們一共54人,從頭到尾報一次數要多久的時間呢,大家有的說要50秒,有的說60秒,30秒,最後大多數同意50秒,最後表決的時候都不怎麼敢...