1078 二叉樹的遍歷

2021-06-20 18:05:11 字數 1320 閱讀 2421

題目描述:

樣例輸入:

abcbac

fdxeag

xdefag

樣例輸出: 

bcaxedgaf

演算法實現;

/*遍歷二叉樹 */

//由二叉樹前序和中序序列得出後序遍歷序列

//遞迴思想 這個演算法真心不錯!

#include#includevoid getpost(char pre,char in,char post,int len)

} getpost(pre+1,in,post,i);

getpost(pre+i+1,in+i+1,post+i,len-i-1);

}int main()

fclose(stdin);

return 0;

}

特別注意:

1.在剛開始接觸樹的題目時,首先會想到建立一顆完整的樹結構,然後對其進行遍歷,插入等等,但是學習過別人的演算法之後發現,完全不用,只需根據二叉樹的思想,就可以用陣列直接解決;

2.本題中的遞迴演算法很好,傳遞位址,而非自己的想法,傳遞陣列邊界引數,每一次遞迴,都看做是乙個前序和中序序列,然後同樣的解決方法求得;

3.同樣的題目還有1113 求完全二叉樹某一子樹的結點總數,本題也可以用遞迴演算法,但是結果會超時,因此又要求助高人了,直接用乙個迴圈就實現了,題目和實現如下:

題目描述: 

如上所示,由正整數1,2,3……組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。

比如,n = 12,m = 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹中共有4個結點。

輸入: 

輸入資料報括多行,每行給出一組測試資料,包括兩個整數m,n (1 <= m <= n <= 1000000000)。最後一組測試資料中包括兩個0,表示輸入的結束,這組資料不用處理。 

輸出: 

對於每一組測試資料,輸出一行,該行包含乙個整數,給出結點m所在子樹中包括的結點的數目。

樣例輸入: 

3 12

0 0樣例輸出:  4

演算法實現:

/* 二叉樹*/

//求完全二叉樹某一子樹的結點個數

//非遞迴演算法 採用遞迴超時

#includeint main()

if(left<=n)

printf("%d\n",num);

} //fclose(stdin);

return 0;

}

1078 二叉樹遍歷

1078 二叉樹遍歷.cpp 定義控制台應用程式的入口點。題目1078 二叉樹遍歷 時間限制 1 秒記憶體限制 32 兆特殊判題 否提交 5248解決 3142 題目描述 二叉樹的前序 中序 後序遍歷的定義 前序遍歷 對任一子樹,先訪問跟,然後遍歷其左子樹,最後遍歷其右子樹 中序遍歷 對任一子樹,先...

題目1078 二叉樹遍歷

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

題目1078 二叉樹遍歷

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