表示式樹的建立與輸出

2021-10-09 14:14:03 字數 1126 閱讀 6786

表示式樹的建立與輸出
編乙個程式,讀入先序遍歷字串,根據此字串建立一棵二叉樹(以指標方式儲存),請注意的是,我們保證該樹一定是表示式樹(見教材5.2 5.8)。

例如下面的先序遍歷字串:

| + 13 # # * 5 # # 9 # #

運算子只可能是加減乘除,數值為小於等於100,各結點用空格分開,其中「#」代表空樹。

建立起此二叉樹以後,再按要求輸出二叉樹。

輸入輸入由多組測試資料組成。

每組資料報含一行字串,即表示式樹的先序遍歷序列,字串長度大於0且不超過100。

輸出對於每組資料,輸出一行,內容是該表示式樹的全括號表示式,見示例。

樣例輸入 copy

| + 13 # # * 5 # # 9 # #

| * + 13 # # 5 # # 9 # #

樣例輸出 copy

(13+(5 * 9))

((13+5) * 9)

思路:題目說的全括號是指先運算的就有括號,從(13+(5 * 9))中能看出來,本來5*9是不需要括號的,所以題目就很簡單了,只要判斷根節點為符號時在他的左右子樹輸出時輸出括號。

#include

//#include

#define infotype char

using

namespace std;

typedef

struct binarytreenode

bitnode,

*bitree;

void

createbinarytree

(bitree &tree)

else

createbinarytree

(tree-

>lchild)

;createbinarytree

(tree-

>rchild);}

int depth,i;

void

outputbinarytree

(binarytreenode *tree)

}

int

main()

我沒有考慮輸入多組資料。

表示式樹的建立與輸出

表示式樹的建立與輸出 編乙個程式,讀入先序遍歷字串,根據此字串建立一棵二叉樹 以指標方式儲存 請注意的是,我們保證該樹一定是表示式樹 見教材5.2 5.8 例如下面的先序遍歷字串 建立起此二叉樹以後,再按要求輸出二叉樹。輸入輸入由多組測試資料組成。每組資料報含一行字串,即表示式樹的先序遍歷序列,字串...

表示式樹的建立與輸出

題目描述 編乙個程式,讀入先序遍歷字串,根據此字串建立一棵二叉樹 以指標方式儲存 請注意的是,我們保證該樹一定是表示式樹 見教材5.2 5.8 例如下面的先序遍歷字串 每組資料報含一行字串,即表示式樹的先序遍歷序列,字串長度大於0且不超過100。輸出對於每組資料,輸出一行,內容是該表示式樹的全括號表...

表示式樹的建立與輸出

題目要求 根據前序序列建立表示式數並輸出表示式。這裡可以巧妙的使用遞迴演算法解決問題。這裡主要是必須要理清操作符和運算元的關係。所有運算元都為葉子節點,操作符為雙親節點或者根節點。遇到 符號停止遞迴。來自參考 原始碼與注釋 include include include using namespac...