1. 程式人生 > 實用技巧 >資料結構-樹

資料結構-樹

樹。非順序資料結構。日常我們見到的公司的組織架構。
在這裡插入圖片描述
抽象成一個數據結構
在這裡插入圖片描述

然後說一下什麼是二叉樹:樹中的每個節點,最多隻能有兩個子節點。就是二叉樹。一個樹枝可以分兩個叉。

在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
根據以上的方法。來看原始碼
在這裡插入圖片描述
這裡對非空樹,呼叫了insertNode方法
在這裡插入圖片描述
從根節點開始,作比較。
key值比較小的一個,要作為左側節點,如果左側節點非空呢? 那就遞迴的呼叫insertNode方法,比較左側節點的key和新增key,同理,如果插入key值比較大,那就要比較右側節點。
在這裡插入圖片描述
在這裡插入圖片描述
searchNode方法和insertNode方法類似,如果key值比傳入的Node中的key小,就去左側節點遞迴查詢,否則就去右側節點遞迴查詢。

在這裡插入圖片描述
通過中序遍歷方式遍歷所有節點
在這裡插入圖片描述
上圖的執行順序應該是callback(5) , cb(7),cb(9),cb(11), cb(13),cb(15),cb(20),
preOrderTraverse 通過先序遍歷方式遍歷所有節點
在這裡插入圖片描述
執行順序應該是 cb(11),cb(7),cb(5),cb(9),cb(15),cb(13),cb(20)
在這裡插入圖片描述
postOrderTraverse 後序遍歷方式遍歷所有節點,它的執行順序應該是callback(5) , cb(7),cb(9), cb(11), cb(13),cb(15),cb(20),
在這裡插入圖片描述
min就是找到最左側的,max就是找到最右側的
在這裡插入圖片描述
有幾種情況需要注意下:
1,只有一個子節點的情況
2,一個節點只有一個葉子節點的情況
3,一個節點只有兩個子節點的情況
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述