演算法學習 字尾表示式轉二叉樹

2021-07-10 00:26:09 字數 672 閱讀 8997

問題描述:輸入字尾表示式,輸出字尾表示式的二叉樹。

解法與分析:

1. 根據字尾表示式的特點,我們可以知道,只要是運算子的就都是根結點。

2. 我們這裡需要使用乙個棧來儲存字元。遍歷字尾表示式,每當遇到是非運算子的字元,就將它入棧,當遇到是運算子,就將棧中前兩個結點出棧,和運算子組成一棵子樹,然後入棧。遍歷完成後,棧中剩下的唯一的乙個結點就是該字尾表示式的二叉樹的根結點。

/**

* 字尾表示式轉二叉表示式樹

*@param suffixstr

*/public

static

void

suffixexpression2tree(string suffixstr)

treenode root=new treenode(chs[i]);

root.left=stack.pop();

root.right=stack.pop();

stack.push(root);

}else

}if(stack.isempty()||stack.size()>1)

stack.pop().printall();

}

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

1 後序表示式求值 後續表示式 逆波蘭式 的特點 沒有括號。求值方法 從前向後掃,遇到運算元壓棧 遇到操作符,從棧中取出2個運算元運算,結果壓棧。最終棧中所剩的數為結果。2 中序表示式求值 我們先來定義運算子的優先順序 從上到下依次公升高 準備2個棧,乙個專門存放運算子,另乙個專門存放運算元。1.遇...

中綴表示式轉二叉樹

關於中綴表示式轉二叉樹,其實很簡單,只要記住這幾句話就夠了 就這麼簡單 這樣說可能還有人聽不懂 舉個栗子 a b c d e fa b c d e f a b c d e f從左到右遍歷表示式,找到最後計算的字元 分成3部分 a b c d e f 分為左子樹,根,右子樹 再繼續把每個拆分成三部分,...

演算法學習 二叉樹

概念 樹中的元素叫做節點 連線相鄰的節點之間的關係叫父子關係 節點a節點是b節點的父節點,b節點是a節點的子節點。c,d單個節點的父節點是同乙個節點,所以他們互稱為兄弟節點 把沒有父節點的節點叫做根節點 沒有子節點的節點叫做葉子節點或者葉節點 樹節點的高度 節點到葉子節點的最長路徑 邊數 節點的深度...