資料結構-樹
阿新 • • 發佈:2020-10-17
樹。非順序資料結構。日常我們見到的公司的組織架構。
抽象成一個數據結構
然後說一下什麼是二叉樹:樹中的每個節點,最多隻能有兩個子節點。就是二叉樹。一個樹枝可以分兩個叉。
根據以上的方法。來看原始碼
這裡對非空樹,呼叫了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就是找到最右側的
有幾種情況需要注意下:
2,一個節點只有一個葉子節點的情況
3,一個節點只有兩個子節點的情況