二叉樹應用——後綴表達式構建表達式樹

一、前言

    針對前一篇博文後綴表達式求值、中綴表達式到後綴表達式的轉換,已經可以實現中綴表達式到後綴表達式的轉換,這裏再介紹根據後綴表達式構建表達式樹,那我們就能夠從這兩種常用類型的輸入表達式(中綴和後綴)生成表達式樹。


二、構造表達式樹

    由前一篇博文可知,後綴表達式的特點是:一定以兩個操作數開始,且以操作符結尾,形如“a b + c d e + * *”就是一個後綴表達式。而這篇博客要介紹的表達式樹的特點就是:樹的樹葉是操作數(常數或變量),而其他節點爲操作符。由於一般的操作符都是二元的,所以表達式樹一般的都是二叉樹。

    如同後綴表達式求值一樣,我們逐次讀取後綴表達式的每一個符號

        如果符號是操作數,那麼我們就建立一個單節點樹並將一個指向它的指針推入棧中;

        如果符號是操作數,則從棧中彈出兩棵樹T1和T2(先彈出T1),並形成一顆以操作符爲根的樹,其中T1爲右兒子,T2爲左兒子;

        然後將新的樹壓入棧中,繼續上述過程。

    如“a b + c d e + * *”生成表達式樹的主要過程如下圖所示:

        (1)依次讀入操作數a 和 b,並壓入棧中


        (2)遇到操作符“+”


        (3)遇到c  d   e 操作數


        (4)遇到“+”操作符


        (5)遇到“*”操作符


        (6)遇到“*”操作符




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章