溫馨提示×

溫馨提示×

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

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

Java怎么實現遍歷二叉樹

發布時間:2021-06-04 17:14:59 來源:億速云 閱讀:169 作者:Leah 欄目:編程語言

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

二叉樹在計算機中的存儲方式往往線性結構,線性存儲分為順序存儲和鏈式存儲,將二叉樹按層序編號。

順序結構:按編號的順序進行存儲,對于完全二叉樹而言,順序存儲可以反映二叉樹的邏輯,但是對于大多數的二叉樹則無法反映其邏輯關系,不過可以用 ^ 來代替不存在的結點,但是如果這個樹是一個右斜樹,就非常浪費存儲空間。所以二叉樹的存儲形式一般為鏈式存儲結構。

鏈式存儲:每一個結點都分有一個數據域(data)和兩個指針域(lchild和rchild),指針域分別指向左孩子和右孩子,若為空則為null。遍歷方式有四種:前序遍歷、中序遍歷、后序遍歷及層序遍歷,前三種遍歷方式采用遞歸的思想進行遍歷。

為方便理解,畫一個樹并結合代碼

Java怎么實現遍歷二叉樹

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

代碼如下:

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

中序遍歷:若二叉樹為空則返回null,否則從根節點出發訪問左子樹,然后訪問根結點,最后訪問右子樹,如圖:GDHBAEICF

代碼如下:

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

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

代碼如下:

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

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

上述內容就是Java怎么實現遍歷二叉樹,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女