第章 樹和二叉樹答案 (五)
五.算法設計題
.[題目分析]以二叉樹表示算術表達式根結點用於存儲運算符若能先分別求出左子樹和右子樹表示的子表達式的值最後就可以根據根結點的運算符的要求計算出表達式的最後結果
typedef struct node
{ElemType data; float val;
char optr; //只取+ */
struct node *lchild*rchild }BiNode*BiTree;
float PostEval(BiTree bt) // 以後序遍歷算法求以二叉樹表示的算術表達式的值
{float lvrv;
if(bt!=null)
{lv=PostEval(bt>lchild); // 求左子樹表示的子表達式的值
rv=PostEval(bt>rchild); // 求右子樹表示的子表達式的值
switch(bt>optr)
{case +: value=lv+rv; break;
case : value=lvrv;break;
case *: value=lv*rv;break;
case /: value=lv/rv;
} } return(value); }
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23739.html