二叉樹的前序序列 數(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è)二叉樹的根節(jié)點(diǎn)(前序的第一個(gè)節(jié)點(diǎn)),然后通過中間序遍歷,將整個(gè)二叉樹按根節(jié)點(diǎn)直接劃分為兩個(gè)子樹。
此時(shí),按照預(yù)序和中間序一步一步地繪制整個(gè)二叉樹并不困難。然后我們可以編寫后序遍歷序列。例如:已知二叉樹的前序遍歷序列為bc D E F H,中序遍歷序列為bd C E a H F,寫后序遍歷序列。根據(jù)預(yù)序,樹的根節(jié)點(diǎn)是a;根據(jù)中間序和根節(jié)點(diǎn),B、D、C、e在根節(jié)點(diǎn)的左子樹上,h、f在根節(jié)點(diǎn)的右子樹上;通過逐步分析每個(gè)子樹,樹是a/╲B f/╲C h/╲D e,后置順序?yàn)椋篸ecbhfa
中間順序與后置順序相同
空樹或缺少正確子樹的單分支二叉樹。
中間順序與上一順序相反
任何節(jié)點(diǎn)都沒有左個(gè)子節(jié)點(diǎn)。
中序序列怎么看?
一般可以先恢復(fù)二叉樹,然后通過遍歷得到后序序列。恢復(fù)過程如下:首先,前序序列中的第一個(gè)是根。得到中間順序后,中間順序可分為三部分:左子樹的中間順序、根和右子樹的中間順序。然后,左子樹的中間階和右子樹的中間階可以返回到前序序列,這些子樹的中間階可以在前序序列中分成三部分,子樹的根仍然在第一位,它返回到子樹的中間順序進(jìn)行剪切,直到所有子樹只有一個(gè)節(jié)點(diǎn)