luogu p1030 求先序排列

2022-02-15 12:08:51 字數 862 閱讀 6347

傳送門

給出一棵二叉樹的中序與後序排列。求出它的先序排列。(約定樹結點用不同的大寫字母表示,長度$ \le 8$)。

\(2\)行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。

\(1\)行,表示一棵二叉樹的先序。

badc

bdca

abcd
這道題要我們求出這棵二叉樹的先序。而先序是根左右,左右子樹也是根左右,這意味著我們要找根,遞迴左右子樹。左右子樹再找根,遞迴左右子樹。也就是說,我們要不斷找根

怎麼找根呢?很顯然這個主二叉樹的根就是後序遍歷中最後乙個。這點不難理解。接下來我們要遞迴左右子樹,那麼怎麼遞迴左右子樹呢?我們把目標定向中序遍歷,中序遍歷是左根右,根在中間,兩邊就是左右子樹。也就是說我們在後序遍歷找根,中序遍歷遞迴左右子樹。然後不斷輸出根,每遞迴乙個左右子樹就輸出它的根,這樣就是前序遍歷了。

叭叭叭這麼多,是時候上**了。注意字串的截斷處理。

/*

* @author: crab-in-the-northeast

* @date: 2020-03-09 00:02:34

* @last modified by: crab-in-the-northeast

* @last modified time: 2020-03-09 09:18:02

*/#include #include void work(std :: string s1, std :: string s2)

int main()

ac 100:r31544805

P1030 求先序排列

給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。1行,表示一棵二叉樹的先序。badc bdca abcd 一棵樹的後序遍歷中的最後一位就是根結點,而中序遍歷中根結點的左右兩邊就是左右子樹上的結點...

P1030 求先序排列

給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 輸入格式 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。輸出格式 1行,表示一棵二叉樹的先序。輸入樣例 1 複製badc bdca includeusing namespace std str...

P1030 求先序排列

給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母表示,長度 8 輸入格式 2行,均為大寫字母組成的字串,表示一棵二叉樹的中序與後序排列。輸出格式 1行,表示一棵二叉樹的先序。輸入樣例 1 複製badc bdca 輸出樣例 1 複製abcd 思路 後序遍歷的最後乙個元素必定...