寫出二叉樹的后序遍歷 請教一下數(shù)據(jù)結(jié)構(gòu),二叉樹的先序遍歷,中序遍歷,后序遍歷,是怎么弄的?
請教一下數(shù)據(jù)結(jié)構(gòu),二叉樹的先序遍歷,中序遍歷,后序遍歷,是怎么弄的?前序遍歷:其思想是先遍歷當(dāng)前節(jié)點(diǎn),然后遍歷左子樹。然后遍歷右子樹。所以您需要記錄右子樹的根節(jié)點(diǎn),并等待它被取出以遍歷右子樹。如果堆棧
請教一下數(shù)據(jù)結(jié)構(gòu),二叉樹的先序遍歷,中序遍歷,后序遍歷,是怎么弄的?
前序遍歷:其思想是先遍歷當(dāng)前節(jié)點(diǎn),然后遍歷左子樹。然后遍歷右子樹。所以您需要記錄右子樹的根節(jié)點(diǎn),并等待它被取出以遍歷右子樹。
如果堆棧不為空或節(jié)點(diǎn)指針不為空,則進(jìn)入循環(huán)
如果當(dāng)前節(jié)點(diǎn)不為空,則先將右側(cè)子節(jié)點(diǎn)放入堆棧(無論右側(cè)節(jié)點(diǎn)是否為空),然后輸出當(dāng)前節(jié)點(diǎn)。賦值節(jié)點(diǎn)指針是左子節(jié)點(diǎn)。
如果當(dāng)前節(jié)點(diǎn)為空。取出堆棧中的節(jié)點(diǎn)。
我懶得在后面寫。有時(shí)間就寫。
不建議業(yè)主問這種問題,但愿意回答的人不多。我想你可以問:哪里可以得到帶注釋的XXX源代碼
如果你說你已經(jīng)實(shí)現(xiàn)了按前序生成二叉樹,你要么使用一個(gè)非純前序序列(例如,該序列包含所有遇到的空節(jié)點(diǎn)記錄),要么使用二叉樹的其他信息。這三個(gè)遍歷序列中只有一個(gè)已知,因此不可能確定二叉樹。根據(jù)“中間順序第一順序”或“中間順序后順序”,可以確定二叉樹。該方法首先確定樹的根,然后確定兩個(gè)子樹對應(yīng)的兩個(gè)遍歷序列,然后遞歸求解。-----“先排序后排序”不起作用,因?yàn)闊o法區(qū)分左子樹和右子樹。
求二叉樹的前中后序遍歷有什么技巧?
任何二叉樹的葉節(jié)點(diǎn)在前序、中序和后序遍歷序列中的相對順序都不會(huì)改變。說明如下:根據(jù)三種遍歷順序和特點(diǎn):前序是關(guān)于根的,中序是關(guān)于左根的,后序是關(guān)于左根的。因此,子樹的根(即分支節(jié)點(diǎn))會(huì)更改相對子順序。例如:對于一個(gè)完整的三級(jí)二叉樹,每一層都由一個(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)于根的。同樣,中間的順序是左根右根,最后的順序是左根右根。前序、中序和后序都是先左后右。