中序和后序確定二叉樹 數(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ù)前序,樹的根節(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/De,第二級是:decbhfa首先恢復(fù)二叉樹,然后遍歷二階,得到二階序列。恢復(fù)過程如下:首先,一階序列中的第一個(gè)是根。在得到二階序列后,二階序列可以分為三部分:左子樹的中階,根,右子樹的中階,然后左子樹和右子樹的中階返回到這些子樹的前階序列中的一階序列,根子樹的前序仍然在第一位,然后回到子樹的中間序進(jìn)行剪切,直到所有子樹只有一個(gè)節(jié)點(diǎn)
前序:它是一種二叉樹遍歷,即先訪問根節(jié)點(diǎn),然后遍歷左子樹,然后遍歷右子樹。遍歷左右子樹時(shí),首先訪問根節(jié)點(diǎn),然后遍歷左子樹,然后遍歷右子樹。如果二叉樹為空,則返回。中間順序:是一種二叉樹遍歷,即先遍歷左子樹,然后訪問根節(jié)點(diǎn),再遍歷右子樹。如果二叉樹為空,則結(jié)束并返回。后序:是一種二叉樹遍歷,即先遍歷左子樹,再遍歷右子樹,然后訪問根節(jié)點(diǎn)。遍歷左右子樹時(shí),先遍歷左子樹,再遍歷右子樹,最后遍歷根節(jié)點(diǎn)。擴(kuò)展數(shù)據(jù):當(dāng)數(shù)學(xué)表達(dá)式樹按中間順序、前順序和后順序遍歷時(shí),分別得到表達(dá)式的中綴形式、前綴形式和后綴形式。如果知道前序遍歷和中序遍歷,就可以確定后序遍歷。類似地,如果知道中間順序遍歷和后順序遍歷,則可以確定前順序遍歷。如果知道前序遍歷和后序遍歷,就可以得到中間序遍歷。
數(shù)據(jù)結(jié)構(gòu)中已知前序序列和中序序列,怎么得出后序序列?
從前序的第一個(gè)節(jié)點(diǎn)確定根,中間序確定左子樹和右子樹,如第一個(gè)節(jié)點(diǎn)A。根據(jù)中間序,A的左子樹為DBE,右子樹為FC。然后從前面的順序確定第二個(gè)根B。按照中間順序,B的左子樹是D,右子樹是e。依次重復(fù),直到遍歷所有節(jié)點(diǎn)。因此,遍歷debfca后
首先要了解概念:前序遍歷:訪問根節(jié)點(diǎn)的操作發(fā)生在遍歷其左右子樹之前。中間順序遍歷:訪問根節(jié)點(diǎn)的操作發(fā)生在遍歷其左右子樹時(shí)。后序遍歷:訪問根節(jié)點(diǎn)的操作發(fā)生在遍歷其左右子樹之后。例:遍歷dbcefgha后,為了遍歷edcbahfg,先查找前序遍歷(聯(lián)機(jī)示例)解決方案:遍歷dbcefgha后,先看a是總根節(jié)點(diǎn),然后按順序遍歷edcbahfg找到a的位置,然后edcb在a的左分支,HFG在a的右分支。重復(fù)前兩步,查找從遍歷后的最后一個(gè)位置對應(yīng)點(diǎn),找到左、右分支依次遍歷,最后得到aecdbhgf,然后自己驗(yàn)證……
二叉樹中什么是前序、中序、后序?
任意二叉樹的葉節(jié)點(diǎn)在前序、中序和后序遍歷序列中的相對順序不變,并給出了解釋如下:因?yàn)楦鶕?jù)三種遍歷順序和特點(diǎn):前序是左、右根,中序是左、右根,后序是左、右根,所以改變相對順序的是子樹的根,即分支節(jié)點(diǎn)。例如:對于一個(gè)完整的三級二叉樹,每一層都由一個(gè)自然數(shù)從左到右除以0(第一層,1;第二層,2,3;第三層,4,5,6,7),然后遍歷為1245367。對于1的根節(jié)點(diǎn),245是左分支,367是右分支;對于2,4是左分支,5是右分支;對于3,245是左分支,367是右分支,6在左邊,7在右邊,所以前序遍歷是關(guān)于根的。同樣,中間的順序是左根右根,最后的順序是左根右根。前序、中序和后序都是先左后右。