數(shù)據(jù)結(jié)構(gòu)中序遍歷例題 數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?
數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?首先要明確前序、中序、后序的遍歷順序:前序:父節(jié)點、左子節(jié)點、右子節(jié)點;中序:左子節(jié)點、父節(jié)點、右子節(jié)點;后序:左子節(jié)點、右子節(jié)點、父節(jié)點;首先根據(jù)
數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?
首先要明確前序、中序、后序的遍歷順序:前序:父節(jié)點、左子節(jié)點、右子節(jié)點;中序:左子節(jié)點、父節(jié)點、右子節(jié)點;后序:左子節(jié)點、右子節(jié)點、父節(jié)點;首先根據(jù)前序遍歷,確定整個二叉樹的根節(jié)點(前序的第一個節(jié)點),然后通過中間序遍歷,將整個二叉樹按根節(jié)點直接劃分為兩個子樹。
此時,按照預(yù)序和中間序一步一步地繪制整個二叉樹并不困難。然后我們可以編寫后序遍歷序列。例如:已知二叉樹的前序遍歷序列為bc D E F H,中序遍歷序列為bd C E a H F,寫后序遍歷序列。根據(jù)預(yù)序,樹的根節(jié)點是a;根據(jù)中間序和根節(jié)點,B、D、C、E在根節(jié)點的左子樹上,h、F在根節(jié)點的右子樹上;通過逐步分析子樹,樹是a/╲B F/╲C h/╲D E,后跟decbhfa
例如
中間順序:dgbaechf//左根右根
最后順序:gdbehfca//左根和右根
(1)determine root
get
中間順序:(DGB)a(echf)最后順序:(GDB)(ehfc)a
(2)determine left node
從上面知道,左節(jié)點沒有節(jié)點
(3)確定右節(jié)點
中間順序[(E)C(HF)]最后順序:[(E)(HF)C]
確定整個樹為
數(shù)據(jù)結(jié)構(gòu)中序和后序怎么畫二叉樹?
找到根節(jié)點(通過post順序),然后把中間順序序列分成兩段,左子樹和右子樹,然后遞歸地,在分割時,可以用中間順序的左子樹和右子樹的節(jié)點數(shù)來確定后順序序列Dbeca
1中每段的節(jié)點數(shù)。最后一個節(jié)點必須是根節(jié)點,在本例中是a
2。中間順序?qū)?yīng)的根是a,所以a是根,BD是左子樹,CE是右子樹
3。左子樹中有兩個節(jié)點,右子樹中有兩個節(jié)點,因為后一順序遍歷是先左后右,所以后一順序被分成兩段,左dB,右EC
4。因此,左子樹的根被確定為B,右子樹的根被確定為C
5,順序是左子樹部分BD(B是根),其右子樹是D,左子樹部分根是C,右子樹部分根是e
是前序ABCDE,首先恢復(fù)二叉樹,然后遍歷后序序列得到后序序列?;謴?fù)過程如下:首先,前序序列的第一根是根。在得到中間順序后,中間順序可分為三部分:左子樹的中間順序、右子樹的根和中間順序。然后,將左子樹的中階和右子樹的中階分別返回到樹的前階序列中,子樹的根仍然在第一位,然后返回到子樹的中階進行切割,直到所有子樹只有一個節(jié)點