樹論 求先序遍歷

2022-05-21 11:57:10 字數 692 閱讀 2320

原題傳送門

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

輸入格式:

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

輸出格式:

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

首先,一點基本常識,給你乙個後序遍歷,那麼最後乙個就是根(如abcd,則根為d)。

因為題目求先序,意味著要不斷找根。

中序acgdbhzkx,後序cdgahxkzb,首先可找到主根b;

那麼我們找到中序遍歷中的b,由這種遍歷的性質,可將中序遍歷分為acgd和hzkx兩棵子樹,

那麼對應可找到後序遍歷cdga和hxkz(從頭找即可)

從而問題就變成求1.中序遍歷acgd,後序遍歷cdga的樹 2.中序遍歷hzkx,後序遍歷hxkz的樹;

接著遞迴,按照原先方法,找到1.子根a,再分為兩棵子樹2.子根z,再分為兩棵子樹。

就按這樣一直做下去(先輸出根,再遞迴);

模板概括為step1:找到根並輸出

step2:將中序,後序各分為左右兩棵子樹;

step3:遞迴,重複step1,2;

#include#include#includeusing namespace std;

void beford(string in,string after)

求先序遍歷

如下 include struct treenode treenode binarytreefromorderings char inorder,char aftorder,int length treenode node new treenode 新建乙個樹節點 node elem aftorde...

求先序遍歷與後序遍歷

問題描述 給出一棵二叉樹的中序與後序排列。求出它的先序排列。約定樹結點用不同的大寫字母 表示,長度 8 輸入格式 兩行,每行乙個字串,分別表示中序和後序排列 輸出格式 乙個字串,表示所求先序排列 樣例輸入 badc bdca 樣例輸出 abcd 求後序遍歷與後序遍歷 include include ...

樹的先序遍歷

先序遍歷順序 根 左 右 對於任一結點p 1.訪問結點p,並將結點p入棧 2.判斷結點p的左孩子是否為空,若為空,則取棧頂結點並進行出棧操作,並將棧頂結點的右孩子置為當前的結點p,迴圈至1 若不為空,則將p的左孩子置為當前的結點p 3.直到p為null並且棧為空,則遍歷結束 所以 1 先將根節點入棧...