二叉樹的應用 表示式樹

2021-09-07 14:56:15 字數 1010 閱讀 9871

假設:對於乙個運算表示式,只考慮2元運算(如加減乘除 )和 運算元,我們就可以用乙個二叉樹去儲存這個表示式:用葉子結點儲存運算元,內部結點儲存運算子,這樣的二叉樹就是乙個表示式樹。由於運算子都是二元的,則這個樹實質也是乙個滿二叉樹。

先序遍歷表示式樹,得到的是字首表示式(波蘭表示式)

中序遍歷表示式樹,得到的是中綴表示式

後序遍歷表示式樹,得到的是字尾表示式(逆波蘭表示式)

可以從字尾表示式來構建乙個表示式樹,如果是中綴表示式,則可以先轉化為字尾表示式,這篇文章有介紹->click me

演算法:

//

由乙個字尾表示式構造乙個表示式數,返回。

createexpressiontree(suffixexpression)

stack s

for each element e in suffixexpression do

if(e is 運算元 )

node tree = new

node(e)

s.push(tree)

else

if(e is 運算子)

node secondoperand =s.pop()

node firstoperand =s.pop()

node tree = new

node(e)

tree.setleft(firstoperand)

tree.setright(secondoperand)

s.push(tree);

//理想情況下,棧最後只有乙個node,就是整個表示式的root。

return

s.pop()

二叉樹的簡單應用 表示式樹

算數表示式是分層的遞迴結構,乙個運算子作用於相應的運算物件,其運算物件又可以是任意複雜的表示式。二叉樹的遞迴結構正好用來表示這種表示式。下面只討論二元表示式。二元表示式可以很自然的聯絡到二叉樹 以基本運算物件作為葉節點中的資料 以運算子作為非葉節點中的資料,其兩棵子樹是它的運算物件,子樹可以是基本運...

07 2 二叉數,二叉樹的簡單應用 表示式樹

二叉樹的list實現 def bintree data,left none,right none 二叉樹 param data 根結點的元素 param left 左子樹元素 param right 右子樹元素 return return data,left,right defis empty bi...

棧 二叉樹 表示式 表示式樹 表示式求值

總時間限制 1000ms 記憶體限制 65535kb 描述 眾所周知,任何乙個表示式,都可以用一棵表示式樹來表示。例如,表示式a b c,可以表示為如下的表示式樹 a b c 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入 輸入...