以下程序是先序遍歷二叉樹的遞歸 某二叉樹的先序和后序遍歷序列正好相反,則該二叉樹一定是什么二叉樹?
某二叉樹的先序和后序遍歷序列正好相反,則該二叉樹一定是什么二叉樹?答案是高度等于節(jié)點(diǎn)數(shù)的二叉樹。分析如下:前序遍歷順序?yàn)閙-l-r,后序遍歷順序?yàn)閘-r-m,可見只有中間節(jié)點(diǎn)(m)的順序發(fā)生了變化,左
某二叉樹的先序和后序遍歷序列正好相反,則該二叉樹一定是什么二叉樹?
答案是高度等于節(jié)點(diǎn)數(shù)的二叉樹。分析如下:前序遍歷順序?yàn)閙-l-r,后序遍歷順序?yàn)閘-r-m,可見只有中間節(jié)點(diǎn)(m)的順序發(fā)生了變化,左右節(jié)點(diǎn)的相對(duì)位置保持不變;可以推斷,為了滿足問(wèn)題的意義,“二叉樹的前序序列與后序序列正好相反”,這意味著整個(gè)二叉樹的左或右子樹之一沒(méi)有(遍歷,第一:M-L;第二:L-M或第一:M-R;最后:R-M),即它必須是一個(gè)鏈。因此,二叉樹的高度必須等于節(jié)點(diǎn)數(shù)。
二叉樹先序,中序,后序遍歷順序?
任何二叉樹的葉節(jié)點(diǎn)在前序、中序和后序遍歷序列中的相對(duì)順序都不會(huì)改變。說(shuō)明如下:根據(jù)三種遍歷順序和特點(diǎn):前序是關(guān)于根的,中序是關(guān)于左根的,后序是關(guān)于左根的。因此,子樹的根(即分支節(jié)點(diǎn))會(huì)更改相對(duì)子順序。例如:對(duì)于一個(gè)完整的三級(jí)二叉樹,每一層都由一個(gè)自然數(shù)從左到右除以0(第一層,1;第二層,2,3;第三層,4,5,6,7),然后遍歷為1245367。對(duì)于1的根節(jié)點(diǎn),245是左分支,367是右分支;對(duì)于2,4是左分支,5是右分支;對(duì)于3,245是左分支,367是右分支,6在左邊,7在右邊,所以前序遍歷是關(guān)于根的。同樣,中間的順序是左根右根,最后的順序是左根右根。前序、中序和后序都是先左后右。
請(qǐng)教一下數(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)放入堆棧(無(wú)論右側(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è)主問(wèn)這種問(wèn)題,但愿意回答的人不多。我想你可以問(wèn):哪里可以得到帶注釋的XXX源代碼