前中后序遍歷有技巧嗎 數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?
數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?首先要明確前序、中序、后序的遍歷順序:前序:父節(jié)點(diǎn)、左子節(jié)點(diǎn)、右子節(jié)點(diǎn);中序:左子節(jié)點(diǎn)、父節(jié)點(diǎn)、右子節(jié)點(diǎn);后序:左子節(jié)點(diǎn)、右子節(jié)點(diǎn)、父節(jié)點(diǎn);首先根據(jù)
數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?
首先要明確前序、中序、后序的遍歷順序:前序:父節(jié)點(diǎn)、左子節(jié)點(diǎn)、右子節(jié)點(diǎn);中序:左子節(jié)點(diǎn)、父節(jié)點(diǎn)、右子節(jié)點(diǎn);后序:左子節(jié)點(diǎn)、右子節(jié)點(diǎn)、父節(jié)點(diǎn);首先根據(jù)前序遍歷,確定整個(gè)二叉樹(shù)的根節(jié)點(diǎn)(前序的第一個(gè)節(jié)點(diǎn)),然后通過(guò)中間序遍歷,將整個(gè)二叉樹(shù)按根節(jié)點(diǎn)直接劃分為兩個(gè)子樹(shù)。
此時(shí),按照預(yù)序和中間序一步一步地繪制整個(gè)二叉樹(shù)并不困難。然后我們可以編寫(xiě)后序遍歷序列。例如:已知二叉樹(shù)的前序遍歷序列為bc D E F H,中序遍歷序列為bd C E a H F,寫(xiě)后序遍歷序列。根據(jù)前序,樹(shù)的根節(jié)點(diǎn)是a;根據(jù)中間序和根節(jié)點(diǎn),B、D、C、E在根節(jié)點(diǎn)的左子樹(shù)上,H、F在根節(jié)點(diǎn)的右子樹(shù)上;通過(guò)對(duì)每個(gè)子樹(shù)的逐步分析,樹(shù)是a/B F/C H/De,第二級(jí)是:decbhfa首先恢復(fù)二叉樹(shù),然后遍歷二階,得到二階序列?;謴?fù)過(guò)程如下:首先,一階序列中的第一個(gè)是根。在得到二階序列后,二階序列可以分為三部分:左子樹(shù)的中階,根,右子樹(shù)的中階,然后左子樹(shù)和右子樹(shù)的中階返回到這些子樹(shù)的前階序列中的一階序列,根子樹(shù)的所有節(jié)點(diǎn)仍然放在第一位,并返回到子樹(shù)的中間順序進(jìn)行再次切割,直到所有子樹(shù)只有一個(gè)節(jié)點(diǎn)