數(shù)據(jù)結(jié)構(gòu)先序中序后序規(guī)則 數(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ù)預(yù)排序,樹(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后一個(gè)順序是:decbhfa
找到根節(jié)點(diǎn)(通過(guò)后一個(gè)順序),然后把中間順序的序列分成兩段,左子樹(shù)和右子樹(shù),然后遞歸地,在分割時(shí),您可以使用中間順序的左、右子樹(shù)的節(jié)點(diǎn)數(shù)來(lái)確定序列中每個(gè)段的節(jié)點(diǎn)數(shù)。
例如:在中間bdace Dbeca
1之后。最后一個(gè)節(jié)點(diǎn)必須是根節(jié)點(diǎn),在本例中是a
2。中間順序?qū)?yīng)的根是a,所以a是根,BD是左子樹(shù),CE是右子樹(shù)
3。左子樹(shù)中有兩個(gè)節(jié)點(diǎn),右子樹(shù)中有兩個(gè)節(jié)點(diǎn),因?yàn)楹笠豁樞虮闅v是先左后右,所以后一順序被分成兩段,左dB,右EC
4。因此,左子樹(shù)的根被確定為B,右子樹(shù)的根被確定為C
5,按順序,左子樹(shù)部分BD(B是根)有右子樹(shù)D,左子樹(shù)部分C和右子樹(shù)e
數(shù)據(jù)結(jié)構(gòu)知道先序遍歷和中序遍歷怎么求后續(xù)遍歷?
首先找到根節(jié)點(diǎn),前序遍歷的第一個(gè)是根節(jié)點(diǎn)(最后一個(gè)是反向的);然后按順序找到根節(jié)點(diǎn),左邊的子樹(shù)在左邊,右邊的子樹(shù)在右邊;以此類推,以您的一個(gè)為例:首先,a(按順序查找),bfdg,左邊子樹(shù);CEH,右邊子樹(shù)(按順序查找)。
那么B,左子樹(shù)為空,F(xiàn)DG右子樹(shù)為空。然后C,。。。。上面的步驟你可以畫(huà)一個(gè)二叉樹(shù),然后簡(jiǎn)單的