假設:對於乙個運算表示式,只考慮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 現在,給你乙個中綴表示式,這個中綴表示式用變數來表示 不含數字 請你將這個中綴表示式用表示式二叉樹的形式輸出出來。輸入 輸入...