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