二叉樹(shù)的先序 先序遍歷與后序遍歷?
先序遍歷與后序遍歷?前序遍歷:首先訪(fǎng)問(wèn)根節(jié)點(diǎn),然后遍歷左子樹(shù),最后遍歷右子樹(shù)。在遍歷左、右子樹(shù)時(shí),我們還是先訪(fǎng)問(wèn)根節(jié)點(diǎn),然后遍歷左子樹(shù),最后遍歷右子樹(shù)。后序遍歷:首先遍歷左子樹(shù),然后遍歷右子樹(shù),最后訪(fǎng)
先序遍歷與后序遍歷?
前序遍歷:首先訪(fǎng)問(wèn)根節(jié)點(diǎn),然后遍歷左子樹(shù),最后遍歷右子樹(shù)。在遍歷左、右子樹(shù)時(shí),我們還是先訪(fǎng)問(wèn)根節(jié)點(diǎn),然后遍歷左子樹(shù),最后遍歷右子樹(shù)。
后序遍歷:首先遍歷左子樹(shù),然后遍歷右子樹(shù),最后訪(fǎng)問(wèn)根節(jié)點(diǎn)。遍歷左、右子樹(shù)時(shí),仍先遍歷左子樹(shù),再遍歷右子樹(shù),最后遍歷根節(jié)點(diǎn)。
數(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ù)上;然后逐級(jí)分析每個(gè)子樹(shù),樹(shù)是a/╲B f/╲C、h/╲D,e是decbhfa
森林有中序和后序遍歷嗎?
前序遍歷:其思想是先遍歷當(dāng)前節(jié)點(diǎn),然后遍歷左子樹(shù)。然后遍歷右子樹(shù)。所以您需要記錄右子樹(shù)的根節(jié)點(diǎn),并等待它被取出以遍歷右子樹(shù)。
如果堆棧不為空或節(jié)點(diǎn)指針不為空,則進(jìn)入循環(huán)
如果當(dāng)前節(jié)點(diǎn)不為空,則先將右側(cè)子節(jié)點(diǎn)放入堆棧(無(wú)論右側(cè)節(jié)點(diǎn)是否為空),然后輸出當(dāng)前節(jié)點(diǎn)。賦值節(jié)點(diǎn)指針是左子節(jié)點(diǎn)。
如果當(dāng)前節(jié)點(diǎn)為空。取出堆棧中的節(jié)點(diǎn)。
我懶得在后面寫(xiě)。有時(shí)間就寫(xiě)。
不建議業(yè)主問(wèn)這種問(wèn)題,但愿意回答的人不多。我想你可以問(wèn):哪里可以得到帶注釋的XXX源代碼