溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么執(zhí)行C語言中二叉樹中序遍歷

發(fā)布時(shí)間:2020-07-16 10:00:15 來源:億速云 閱讀:337 作者:Leah 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)怎么執(zhí)行C語言中二叉樹中序遍歷,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

C語言中二叉樹中序遍歷的方法:首先遍歷左子樹,并借助遞歸繼續(xù)訪問直到最左側(cè)節(jié)點(diǎn);然后訪問根結(jié)點(diǎn);最后遍歷右子樹,并借助遞歸繼續(xù)訪問直到最右側(cè)節(jié)點(diǎn)即可。

C語言中二叉樹中序遍歷的方法:

中序遍歷的規(guī)則是:左子樹---> 根結(jié)點(diǎn) ---> 右子樹。所以我們訪問節(jié)點(diǎn)的順序需要變。

  • 我們直到遞歸是來回的過程,對于恰好有兩個(gè)子節(jié)點(diǎn)(子節(jié)點(diǎn)無節(jié)點(diǎn))的節(jié)點(diǎn)來說。只需要訪問一次左節(jié)點(diǎn),訪問根,訪問右節(jié)點(diǎn)。即可。

  • 而如果兩側(cè)有節(jié)點(diǎn)來說。每個(gè)節(jié)點(diǎn)都要滿足中序遍歷的規(guī)則。我們從根先訪問左節(jié)點(diǎn)。到了左節(jié)點(diǎn)這兒左節(jié)點(diǎn)又變成一顆子樹,也要滿足中序遍歷要求。所以就要先訪問左節(jié)點(diǎn)的左節(jié)點(diǎn)(如果存在)。那么如果你這樣想,規(guī)則雖然懂了。但是也太復(fù)雜了。那么我們借助遞歸。因?yàn)樗淖訂栴}和根節(jié)點(diǎn)的問題一致,只是范圍減小了。所以我們使用遞歸思想來解決。

  • 那么遞歸的邏輯為:考慮特殊情況(特殊就直接訪問)不進(jìn)行遞歸否則遞歸的訪問左子樹(讓左子樹執(zhí)行相同函數(shù),特殊就停止遞歸輸出,不特殊就一直找下去直到最左側(cè)節(jié)點(diǎn)。)——>輸出該節(jié)點(diǎn)—>遞歸的訪問右子樹.

public void zhongxu(node t)// 中序遍歷 中序遍歷:左子樹---> 根結(jié)點(diǎn) ---> 右子樹
{
if (t != null) {
zhongxu(t.left);
System.out.print(t.value + " ");// 訪問完左節(jié)點(diǎn)訪問當(dāng)前節(jié)點(diǎn)
zhongxu(t.right);
}
}


關(guān)于怎么執(zhí)行C語言中二叉樹中序遍歷就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI