天天看點

18 張圖,一文了解 8 種常見的資料結構(2)

假如有三個節點,一個是父節點,兩個是不同級的子節點,那麼就有六種情況:

18 張圖,一文了解 8 種常見的資料結構(2)

三個節點組成的無序樹,合起來就是九種情況。

二叉樹:每個節點最多含有兩個子樹。二叉樹按照不同的表現形式又可以分為多種。

完全二叉樹:對于一顆二叉樹,假設其深度為 d(d > 1)。除了第 d 層,其它各層的節點數目均已達最大值,且第 d 層所有節點從左向右連續地緊密排列,這樣的二叉樹被稱為完全二叉樹。

18 張圖,一文了解 8 種常見的資料結構(2)

拿上圖來說,d 為 3,除了第 3 層,第 1 層、第 2 層 都達到了最大值(2 個子節點),并且第 3 層的所有節點從左向右聯系地緊密排列(H、I、J、K、L),符合完全二叉樹的要求。

滿二叉樹:一顆每一層的節點數都達到了最大值的二叉樹。有兩種表現形式,第一種,像下圖這樣(每一層都是滿的),滿足每一層的節點數都達到了最大值 2。

18 張圖,一文了解 8 種常見的資料結構(2)

第二種,像下圖這樣(每一層雖然不滿),但每一層的節點數仍然達到了最大值 2。

18 張圖,一文了解 8 種常見的資料結構(2)

二叉查找樹:英文名叫 Binary Search Tree,即 BST,需要滿足以下條件:

任意節點的左子樹不空,左子樹上所有節點的值均小于它的根節點的值;

任意節點的右子樹不空,右子樹上所有節點的值均大于它的根節點的值;

任意節點的左、右子樹也分别為二叉查找樹。

18 張圖,一文了解 8 種常見的資料結構(2)

基于二叉查找樹的特點,它相比較于其他資料結構的優勢就在于查找、插入的時間複雜度較低,為 O(logn)。假如我們要從上圖中查找 5 個元素,先從根節點 7 開始找,5 必定在 7 的左側,找到 4,那 5 必定在 4 的右側,找到 6,那 5 必定在 6 的左側,找到了。

繼續閱讀