二叉樹的前中后序遍歷

????????其實(shí)對(duì)于這個(gè)問題,很多人都可以說清楚,前中后對(duì)應(yīng)的其實(shí)就是獲取根節(jié)點(diǎn)的順序來定義的,然后從左往右遍歷(即使是后序遍歷也是一樣,先左后右然后是root)。

? ? ? ? 然后前序遍歷和中序遍歷都有一個(gè)模型的圖片的,這個(gè)讓我copy一下百度百科的圖片。。

前序遍歷,一條不間斷的流水線,很好辨識(shí)


中序遍歷,這個(gè)還有一個(gè)說法是底部映射(投影法)


這個(gè)沒什么多說的,記住這個(gè)結(jié)果 DEBFCA? 左右上,只要有子節(jié)點(diǎn),一定不要遍歷root節(jié)點(diǎn)

最后代碼實(shí)現(xiàn),建議使用遞歸,因?yàn)楹?jiǎn)單好記。。笑cry。

//前序遍歷遞歸的方式

? ? public void pre(TreeNode root){

? ? ? ? if(null!=root){

? ? ? ? //前序就是先答應(yīng)root節(jié)點(diǎn),然后左右遞歸

? ? ? ? ? ? System.out.print(root.getData()+"\t");

? ? ? ? ? ? pre(root.getLeft());

? ? ? ? ? ? pre(root.getRight());

? ? ? ? }

? ? }

? ? //中序遍歷采用遞歸的方式

? ? public void mid(TreeNode root){

? ? ? ? if(null!=root){

? ? ? ? ? ? mid(root.getLeft());

? ? ? ? // 中序遍歷就是左邊遞歸結(jié)束,然后直接打印,然后遞歸右邊

? ? ? ? ? ? System.out.print(root.getData()+"\t");

? ? ? ? ? ? mid(root.getRight());

? ? ? ? }

? ? }

? //后序遍歷采用遞歸的方式

? ? public void post(TreeNode root){

? ? ? ? if(root!=null){

? ? ? ? ? ? post(root.getLeft());

? ? ? ? ? ? post(root.getRight());

? ? ? ? //后序就是左遞歸之后右遞歸,然后最后打印

? ? ? ? ? ? System.out.print(root.getData()+"\t");

? ? ? ? }

? ? }

速記:前中后序的遍歷就是將打印的操作放在前中后即可,it is so easy。。還有記不住的?不會(huì)了吧,因?yàn)槠渑c代碼完全一樣。。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容