從字尾表示式建立表示式樹

2021-07-31 02:47:10 字數 1175 閱讀 3059

在乙個公司呆久了,不出去看看,你永遠不知道你的水平如何,你值多少錢。也就是說,作為乙個技術人員,應該每隔4、5個月,出去參加幾次面試,看看自己的技術水平有沒有和it圈脫節。但更多的是在尋找更好的機會,找乙份更適合自己,待遇更高的工作。 好了,從今天起,每天都總結乙個小的資料結構與演算法知識,一來擴充自己的知識;二來***。

二叉樹的遍歷

對於二叉樹無非就三種遍歷方式:

對於這三種遍歷方式,我通過下面這張圖來詳細的介紹一下我的方法。

對於上圖中的二叉樹,分別使用三種遍歷得到的結果分別是:

二叉樹的主要用處之一是在編譯器設計領域,如下圖所示的二叉樹:

這是乙個顆表示式樹,對這個二叉樹進行後續遍歷,得到的結果是:

a b + c d e + d * *

而這種表示式也叫做字尾表示式,很多時候,我們需要根據字尾表示式重新建立一顆二叉樹。下面就使用**實現這種需求。

從字尾表示式建立表示式樹

比如現在有以下乙個字尾表示式:

a b + c d e + * *

根據這個字尾表示式建立二叉表示式樹,演算法如下:

1. 依次讀取表示式;

2. 如果是運算元,則將該運算元壓入棧中;

3. 如果是操作符,則彈出棧中的兩個運算元,第乙個彈出的運算元作為右孩子,第二個彈出的運算元作為左孩子;然後再將該操作符壓入棧中。

這樣下去,就可以建立一顆完整的表示式樹。

**簡單實現

下面就使用c++**進行了簡單的實現。

定義樹節點資訊。

typedef

struct

binarynode

treenode

;

建立乙個新的節點。

treenode

*createtreenode

(charch)

讀取表示式,建立表示式樹。

stack

<

treenode

*>

nodestack

;charch;

while

((ch

=getchar

())!=

'\n'

)else

}

中綴表示式 字首表示式 字尾表示式

中綴表示式 中綴記法 中綴表示式是一種通用的算術或邏輯公式表示方法,操作符以中綴形式處於運算元的中間。中綴表示式是人們常用的算術表示方法。雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。...

中綴表示式 字尾表示式 字首表示式

正如我們常常潛意識認為我們所說的數字都是十進位制,對於數字的其他進製感覺不正確一樣,其實只是我們不熟悉而已,其他進製其實也不過就是一種對資料的表達方式而已。對於我們的表示式也是一樣。eg 表示式2 3 5 7 我們上面所看到的也就是我們平時常用的書寫表示式的方式就是我們所謂的 中綴表示式 字首表示式...

字首表示式 中綴表示式 字尾表示式。

表示式 就是式子。是由數字 算符 數字分組符號 自由量和約束量組成的。人們一般習慣寫出來的式子,叫做中綴表示式。因為在計算機中,不方便表達 數字分組符號。所以 波蘭人發明了一種把去符號化的表示式。字首表示式 字首表示式 沒有括號,算符在前 數字在後。波蘭數學家發明,為了紀念,又叫做波蘭式。跟其對應,...