用二叉樹儲存表示式

2021-10-23 05:22:44 字數 1368 閱讀 2580

學習了資料結構的第三章二叉樹後,實驗是用二叉樹來儲存表示式。

struct node

;class

binarytree

;

node* binarytree::

getroot()

binarytree::

binarytree()

void binarytree::

preorder

(node* bt)

}void binarytree::

inorder

(node* bt)

}void binarytree::

postorder

(node* bt)

}void binarytree::

destorytree

(node* bt)

然後是判斷字元是否是數字的函式和判斷運算子優先順序的函式。

bool

isnumber

(char ch)

bool

isprior

(char a,

char b)

要用二叉樹儲存表示式,首先需要將中綴表示式轉化為逆波蘭式,這裡只實現了簡單的功能,即數字只可以是0~9

std::queue<

char

>

torpn

(char

* array)

stk.

pop();

//最後將(出棧

}else

} stk.

push

(array[i]);

//棧為空或當前運算子優先順序高時直接入棧,否則迴圈**棧}}

while

(!stk.

empty()

)return rpn;

}

將torpn返回的佇列轉化成二叉樹:

binarytree creattree

(std::queue<

char

> rpn)

nodestk.

push

(treearray[i]);

//所有迴圈後棧中只剩乙個結點

rpn.

pop();

} binarytree tree = nodestk.

top();

//將最後的結點作為根結點構造樹

nodestk.

pop();

return tree;

}

用二叉樹處理表示式

題目大意 類似a b c d e f 基本思路 遞迴建立表示式樹,優先順序高的在深層次,注意括號,注意結合性,左結合就找優先順序相同的當中在最右邊的 如下 int nc 0 int lch maxn rch maxn char op maxn int buildtree char s,int x,i...

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

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

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

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