溫馨提示×

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

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

Java怎么實(shí)現(xiàn)遍歷二叉樹

發(fā)布時(shí)間:2021-06-04 17:14:59 來源:億速云 閱讀:137 作者:Leah 欄目:編程語(yǔ)言

本篇文章為大家展示了Java怎么實(shí)現(xiàn)遍歷二叉樹,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

二叉樹在計(jì)算機(jī)中的存儲(chǔ)方式往往線性結(jié)構(gòu),線性存儲(chǔ)分為順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ),將二叉樹按層序編號(hào)。

順序結(jié)構(gòu):按編號(hào)的順序進(jìn)行存儲(chǔ),對(duì)于完全二叉樹而言,順序存儲(chǔ)可以反映二叉樹的邏輯,但是對(duì)于大多數(shù)的二叉樹則無法反映其邏輯關(guān)系,不過可以用 ^ 來代替不存在的結(jié)點(diǎn),但是如果這個(gè)樹是一個(gè)右斜樹,就非常浪費(fèi)存儲(chǔ)空間。所以二叉樹的存儲(chǔ)形式一般為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。

鏈?zhǔn)酱鎯?chǔ):每一個(gè)結(jié)點(diǎn)都分有一個(gè)數(shù)據(jù)域(data)和兩個(gè)指針域(lchild和rchild),指針域分別指向左孩子和右孩子,若為空則為null。遍歷方式有四種:前序遍歷、中序遍歷、后序遍歷及層序遍歷,前三種遍歷方式采用遞歸的思想進(jìn)行遍歷。

為方便理解,畫一個(gè)樹并結(jié)合代碼

Java怎么實(shí)現(xiàn)遍歷二叉樹

前序遍歷:若二叉樹為空則返回null,否則先訪問根節(jié)點(diǎn)然后遍歷左子樹,再遍歷右子樹,如圖:ABDGHCEIF

代碼如下:

void PreOrderTraverse(BiTree T) {
 if(T == NULL) /*為空返回*/
 return;
 printf("%c",T->data); /*輸出該結(jié)點(diǎn)的信息*/
 PreOrderTraverse(T->lchild); /*遍歷左子樹*/
 PreOrderTraverse(T->rchild); /*遍歷右子樹*/
}

中序遍歷:若二叉樹為空則返回null,否則從根節(jié)點(diǎn)出發(fā)訪問左子樹,然后訪問根結(jié)點(diǎn),最后訪問右子樹,如圖:GDHBAEICF

代碼如下:

void InOrderTraverse(BiTree T) {
 if(T == NULL) /*為空返回*/
 return;
 InOrderTraverse(T->lchild); /*遍歷左子樹*/
 printf("%c",T->data); /*輸出該結(jié)點(diǎn)的信息*/
 InOrderTraverse(T->rchild); /*遍歷右子樹*/
}

后序遍歷:若二叉樹為空則返回null,否則以先葉子后結(jié)點(diǎn)的方式進(jìn)行訪問最后到根結(jié)點(diǎn)遍歷結(jié)束,如圖:GHDBIEFCA

代碼如下:

void PostOrderTraverse(BiTree T) {
 if(T == NULL) /*為空返回*/
 return;
 PostOrderTraverse(T->lchild); /*遍歷左子樹*/
 PostOrderTraverse(T->rchild); /*遍歷右子樹*/
 printf("%c",T->data); /*輸出該結(jié)點(diǎn)的信息*/
}

層序遍歷:若二叉樹為空則返回null,否則從第一層開始進(jìn)行訪問,如圖:ABCDEFGHI,按編號(hào)進(jìn)行輸出或操作即可

上述內(nèi)容就是Java怎么實(shí)現(xiàn)遍歷二叉樹,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

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

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

AI