1029 遍歷問題

2022-05-03 16:57:13 字數 1009 閱讀 8509

時間限制: 1 s

空間限制: 128000 kb

題目等級 : 鑽石 diamond

題解檢視執行結果

我們都很熟悉二叉樹的前序、中序、後序遍歷,在資料結構中常提出這樣的問題:已知一棵二叉樹的前序和中序遍歷,求它的後序遍歷,相應的,已知一棵二叉樹的後序遍歷和中序遍歷序列你也能求出它的前序遍歷。然而給定一棵二叉樹的前序和後序,你卻不能確定其中序遍歷序列,考慮如下圖中的幾棵二叉樹:

所有這些二叉樹都有著相同的前序遍歷和後序遍歷,但中序遍歷卻不相同。

輸入描述 input description

輸入檔案共2行,第一行表示該樹的前序遍歷結果,第二行表示該樹的後序遍歷結果。輸入的字符集合為,長度不超過26。

輸出描述 output description

輸出檔案只包含乙個不超過長整型的整數,表示可能的中序遍歷序列的總數。

樣例輸入 sample input

abccba

樣例輸出 sample output

資料範圍及提示 data size & hint

如描述分類標籤 tags 點此展開 

動態規劃

深度優先搜尋

遞迴搜尋

/*

如果直接求個數,你可以先建立一棵樹,然後尋找即可。

但是這個方法複雜度高,空間高,程式設計長度長。所以不建議使用這種方法

對於樹的基礎概念感覺很多不理解,先序就是先遍歷根,接著左邊,最後右邊,中序中間遍歷根,後序最後遍歷根

這兩個中一定有子串行是相同的

a[i+1]==b[j-1]如果這個成立,相當於有構造乙個新的子樹,會使總方案翻倍(這個話說自己也沒弄清)

答案就是成立的 2^ans

*/#include

#include

using

namespace

std;

char qian[30],hou[30

];int

ans;

intmain()

wikioi 1029 遍歷問題

如果直接求個數,你可以先建立一棵樹,然後尋找即可。但是這個方法複雜度高,空間高,程式設計長度長。所以不建議使用這種方法 對於樹的基礎概念感覺很多不理解,先序就是先遍歷根,接著左邊,最後右邊,中序中間遍歷根,後序最後遍歷根 這兩個中一定有子串行是相同的 a i 1 b j 1 如果這個成立,相當於有構...

CODEVS 1029 遍歷問題

我們都很熟悉二叉樹的前序 中序 後序遍歷,在資料結構中常提出這樣的問題 已知一棵二叉樹的前序和中序遍歷,求它的後序遍歷,相應的,已知一棵二叉樹的後序遍歷和中序遍歷序列你也能求出它的前序遍歷。然而給定一棵二叉樹的前序和後序,你卻不能確定其中序遍歷序列,考慮如下圖中的幾棵二叉樹 所有這些二叉樹都有著相同...

CODEVS 1029 遍歷問題

我們都非常熟悉二叉樹的前序 中序 後序遍歷,在資料結構中常提出這種問題 已知一棵二叉樹的前序和中序遍歷。求它的後序遍歷。對應的,已知一棵二叉樹的後序遍歷和中序遍歷序列你也能求出它的前序遍歷。然而給定一棵二叉樹的前序和後序,你卻不能確定當中序遍歷序列,考慮例如以下圖中的幾棵二叉樹 全部這些二叉樹都有著...