九度OJ 1078 二叉樹遍歷

2021-07-26 11:46:55 字數 1207 閱讀 1750

據機試指南說本題包括了建樹、遍歷、還原等多個考點,幾乎涉及機試二叉樹所有考點。所以吃透此題就好棒棒。

寫完此題後與機試指南上一對照,應該說兩種方法在大體思路上別無二致。區別在於機試指南採用了具體的二叉樹結構,而我的**使用了乙個二維陣列來儲存二叉樹的游標,並沒有定義具體的二叉樹結構體,這是出於節省時空的考慮,故抽象度更高。再加上資料結構有點生疏了,寫起來確實費了一番功夫。寫的時間主要花在了下標+-的處理上=皿=。

通過前序中序還原二叉樹的關鍵就在於:找到根節點後,對左子樹序列和右子樹序列用同樣的方法遞迴找根。剛開始寫的時候本想遞迴傳字串,後來發現還是傳start end 游標來的效率高一些。

題目描述:

輸入:兩個字串,其長度n均小於等於26。

第一行為前序遍歷,第二行為中序遍歷。

二叉樹中的結點名稱以大寫字母表示:a,b,c....最多26個結點。

輸出:輸入樣例可能有多組,對於每組測試樣例,

輸出一行,為後序遍歷的字串。

樣例輸入:

abc

bacfdxeag

xdefag

樣例輸出:

bca

xedgaf

2023年清華大學計算機研究生機試真題

答疑:

#include #include using namespace std;

char prestring[26],instring[26];

int bitree[27][2];//[結點][0=l,1=r]

void partition(int prestart,int preend,int instart,int inend);

void postorder(int root);

int main(){

int root;

while (cin>>prestring){

cin>>instring;

//initiate

//process

partition(0,strlen(prestring)-1,0,strlen(instring)-1);

//output

postorder(prestring[0]-'a');

cout<

九度OJ 1078 二叉樹遍歷

題目描述 輸入 兩個字串,其長度n均小於等於26。第一行為前序遍歷,第二行為中序遍歷。二叉樹中的結點名稱以大寫字母表示 a,b,c.最多26個結點。輸出 輸入樣例可能有多組,對於每組測試樣例,輸出一行,為後序遍歷的字串。樣例輸入 abc bacfdxeag xdefag 樣例輸出 bca xedga...

九度OJ 1078 二叉樹遍歷

題目描述 輸入 兩個字串,其長度n均小於等於26。第一行為前序遍歷,第二行為中序遍歷。二叉樹中的結點名稱以大寫字母表示 a,b,c.最多26個結點。輸出 輸入樣例可能有多組,對於每組測試樣例,輸出一行,為後序遍歷的字串。樣例輸入 abc bacfdxeag xdefag 樣例輸出 bca xedga...

重點 九度OJ 1078 二叉樹遍歷

本題涉及到二叉樹的建立 根據二叉樹的前序和後序重建二叉樹,後序遍歷二叉樹,是二叉樹的基本綜合題,這個題也是之前學習資料結構一直沒碰的題目,一定要重點複習,吃透了。題目描述 輸入 兩個字串,其長度n均小於等於26。第一行為前序遍歷,第二行為中序遍歷。二叉樹中的結點名稱以大寫字母表示 a,b,c.最多2...