遍歷問題(洛谷 P1229)

2021-09-28 18:44:26 字數 900 閱讀 5329

題目描述

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

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

輸入格式

輸a資料共兩行,第一行表示該二叉樹的前序遍歷結果s1,第二行表示該二叉樹的後序遍歷結果s2。

輸出格式

輸出可能的中序遍歷序列的總數,結果不超過長整型數。

輸入 #1

abc

cba

輸出 #1

一道結論題:

一條單鏈,也就是說只有乙個兒子的結點組成鏈,前序遍歷和後序一樣

怎麼判斷它有幾個那種鏈呢?前序為ab後序為ba的就是,我們只要暴力遍歷一遍就行;

**:

#include

#define ll long long

#define pa pair

#define lson k<<1

#define rson k<<1|1

#define n 500100

#define m 2000010

using

namespace std;

string s1,s2;

intmain()

} cout<<(1

<

}

P1229 遍歷問題

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

P1229遍歷問題

一 題目描述 二 題目分析 剛開始沒怎麼看懂題目,後面畫著畫著樹就知道了這個原理,其實這個題目就是讓我們求根據前序和中序所能得到的樹最多有多少棵。而造成兩個序列不同樹的情況就是單子樹的情況,因此我們需要數單子樹的個數,答案就是2 n次方怎麼數呢?如果前序裡的字元和後序裡的字元相等,且他們的後乙個和前...

P1229 遍歷問題 已知先序後序求中序種類

當乙個節點只有乙個子節點的時候,無論這個子節點是左子樹還是右子樹,它的先序以及後序遍歷都是一樣的,所以我們只需要尋找這樣的節點個數,之後乘2就行 方法就是先序從前往後找,後序從後往前找,當出現一樣的時候,先序的下乙個就是該節點的子樹,而後序的前乙個就是該節點的子樹,如果這兩個也一樣,那麼就是上面所說...