我們都很熟悉二叉樹的前序、中序、後序遍歷,在資料結構中常提出這樣的問題:已知一棵二叉樹的前序和中序遍歷,求它的後序遍歷,相應的,已知一棵二叉樹的後序遍歷和中序遍歷序列你也能求出它的前序遍歷。然而給定一棵二叉樹的前序和後序遍歷,你卻不能確定其中序遍歷序列,考慮如下圖中的幾棵二叉樹:
所有這些二叉樹都有著相同的前序遍歷和後序遍歷,但中序遍歷卻不相同。
輸a資料共兩行,第一行表示該二叉樹的前序遍歷結果s1,第二行表示該二叉樹的後序遍歷結果s2。
輸出可能的中序遍歷序列的總數,結果不超過長整型數。
輸入 #1複製
abc輸出 #1複製cba
4思路:
前序:根左右
後序:左右根
可知要使當前層的兩種順序指向同一棵樹,有以下兩種情況
前:根左 後:左根
或者前:根右 後:右根
即:當前層只有1個兒子,存在前序ab、後序的ba,那麼當前層有兩種選擇。
所以只要找到有幾層只有1個兒子即可。
#include using namespace std;
int main()}}
cout<
return 0;
}
P1229遍歷問題
一 題目描述 二 題目分析 剛開始沒怎麼看懂題目,後面畫著畫著樹就知道了這個原理,其實這個題目就是讓我們求根據前序和中序所能得到的樹最多有多少棵。而造成兩個序列不同樹的情況就是單子樹的情況,因此我們需要數單子樹的個數,答案就是2 n次方怎麼數呢?如果前序裡的字元和後序裡的字元相等,且他們的後乙個和前...
P1229 遍歷問題 已知先序後序求中序種類
當乙個節點只有乙個子節點的時候,無論這個子節點是左子樹還是右子樹,它的先序以及後序遍歷都是一樣的,所以我們只需要尋找這樣的節點個數,之後乘2就行 方法就是先序從前往後找,後序從後往前找,當出現一樣的時候,先序的下乙個就是該節點的子樹,而後序的前乙個就是該節點的子樹,如果這兩個也一樣,那麼就是上面所說...
遍歷問題(洛谷 P1229)
題目描述 我們都很熟悉二叉樹的前序 中序 後序遍歷,在資料結構中常提出這樣的問題 已知一棵二叉樹的前序和中序遍歷,求它的後序遍歷,相應的,已知一棵二叉樹的後序遍歷和中序遍歷序列你也能求出它的前序遍歷。然而給定一棵二叉樹的前序和後序遍歷,你卻不能確定其中序遍歷序列,考慮如下圖中的幾棵二叉樹 所有這些二...