1. 程式人生 > >圖說二叉樹新增資料原理以及遍歷原理

圖說二叉樹新增資料原理以及遍歷原理

一、圖說二叉樹新增資料原理

前提說明:

有一個學生類Student,屬性:name,age;

排序:只實現age排序,即只要年齡相同則認為是相同物件(因為是說明新增原理,只要弄懂了最簡單的一種,即使有多個排序,都會知道其新增方式,所以這裡就用最簡單的方式進行說明了)

見下圖

這裡寫圖片描述

這裡寫圖片描述

細說步驟:

1,新增第一個資料25
2,新增第二個資料23,比25小,新增在左邊
3,新增第三個資料18,比25小,新增在左邊,再與23比較,比23小,新增在23左邊
4,新增第四個資料30,比25大,新增在右邊
5,新增第五個資料28,比25大,新增在右邊,再與30比較,比30小,新增在30左邊
6,新增第六個資料7,比25小,新增在左邊,再與最左邊的資料18比較,比18小,新增在左邊
7,新增第七個資料43,比25大,新增在右邊,再與最右邊的資料30比較,比30大,新增在30的右邊。
{特別說明:若第七個資料為29,那麼先於最右邊資料30比較,比30小,新增在30左邊,再與28比較,比28大,新增在28右邊}
8,新增第八個資料8,比25小,新增在左邊,再與最左邊資料7進行比較,比7大,新增在7右邊

注意:每次都是先於根(第一個資料)進行比較,之後與對應側(最左側或最右側資料)進行比較,來判定相對於該資料的左右

特別說明:最左側和最右側是指根分支下的兩個大分支的資料

示例中根的兩大分支下的資料分別如下:
左側:23,18,7
右側:30,43

二、二叉樹遍歷原理

這裡只說一種遍歷方式的原理,因為只要弄懂這一種的原理,其他遍歷方式的原理自然也就懂了。

前序遍歷:先訪問根節點,再訪問左子樹,最後訪問右子樹

中序遍歷:先訪問左子樹,再訪問根節點,最後訪問右子樹

後序遍歷:先訪問左子樹,再訪問右子樹,最後訪問根節點

層序遍歷:每一層從左到右訪問每一個節點。

圖中的寫的序號是新增資料時的順序:

這裡寫圖片描述

細說前序遍歷:先訪問根節點,再訪問左子樹,最後訪問右子樹
注意:這裡說的左右子樹,是指一個節點的左右,這裡應該先把25左側遍歷完,再遍歷右側。都是先遍歷每個節點的左側,遍歷完後再遍歷右側

1,先訪問根節點:25

    先遍歷25的左子樹:
2,再訪問左子樹:23,18,7,20
3,再訪問右子樹:9

    25的左子樹遍歷完畢,開始遍歷右子樹:
4,再訪問25右子樹內容:30,28
5,再訪問下一層:43,38,36
6,在訪問下一層:45

最後的遍歷結果為:
25,23,18,7,20,9,30,28,43,38,36,45

其他:中序,後序- - - - -與前序類似

細說層序遍歷:每一層從左到右訪問每一個節點

1,層序遍歷是一層一層的遍歷的
2,第一層:25
3,第二層:23,30
4,第三層:18,28,43
5,第四層:7,38,45
6,第五層:20,9,36

最後的遍歷結果是:
25,23,30,18,28,43,7,38,45,20,9,36