據機試指南說本題包括了建樹、遍歷、還原等多個考點,幾乎涉及機試二叉樹所有考點。所以吃透此題就好棒棒。
寫完此題後與機試指南上一對照,應該說兩種方法在大體思路上別無二致。區別在於機試指南採用了具體的二叉樹結構,而我的**使用了乙個二維陣列來儲存二叉樹的游標,並沒有定義具體的二叉樹結構體,這是出於節省時空的考慮,故抽象度更高。再加上資料結構有點生疏了,寫起來確實費了一番功夫。寫的時間主要花在了下標+-的處理上=皿=。
通過前序中序還原二叉樹的關鍵就在於:找到根節點後,對左子樹序列和右子樹序列用同樣的方法遞迴找根。剛開始寫的時候本想遞迴傳字串,後來發現還是傳start end 游標來的效率高一些。
題目描述:
輸入:兩個字串,其長度n均小於等於26。
第一行為前序遍歷,第二行為中序遍歷。
二叉樹中的結點名稱以大寫字母表示:a,b,c....最多26個結點。
輸出:輸入樣例可能有多組,對於每組測試樣例,
輸出一行,為後序遍歷的字串。
樣例輸入:
abcbacfdxeag
xdefag
樣例輸出:
bcaxedgaf
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...