1. 程式人生 > 實用技巧 >Linux軟體包安裝之yum的使用

Linux軟體包安裝之yum的使用

紅黑樹的定義

  • 每個節點要麼是紅色,要麼是黑色。
  • 根節點必須是黑色, 每個葉子節點是黑色(葉子節點包含NULL)。
  • 紅色節點不能連續(紅色節點的孩子和父親都不能都是紅色)
  • 如果一個節點是紅色的,則它的子節點必須是黑色的
  • 從任意節點出發,到其所有葉子節點的簡單路徑上都包含相同數目的黑色節點.

平衡二叉查詢樹

我們以這樣一個數組為例 [42,37,18,12,11,6,5] 構建一棵二叉搜尋樹,由於陣列中任意一點都可以作為二叉搜尋樹的根節點,因此這棵二叉搜尋樹並不唯一,我們來看一個極端的例子(以42作為根節點,順序插入元素)
在這裡插入圖片描述
在這個例子中,二叉搜尋樹退化成了連結串列,搜尋的時間複雜度為 O(n),失去了作為一棵二叉搜尋樹的意義。

為了讓二叉搜尋樹不至於太“傾斜”,我們需要構建一棵平衡二叉搜尋樹
在這裡插入圖片描述
可以看出,平衡二叉搜尋樹的搜尋時間複雜度為O(logn),避免了因為隨機選取根節點構建二叉搜尋樹而可能造成的退化成連結串列的情況。下面再抄一段平衡二叉搜尋樹的官方定義:

平衡二叉查詢樹:簡稱平衡二叉樹。是由前蘇聯的數學家 Adelse-Velskil和 Landis 在 1962 年提出的高度平衡的二叉樹,根據科學家的英文名也稱為 AVL 樹。它具有如下幾個性質:

性質1. 可以是空樹。

性質2 假如不是空樹,任何一個結點的左子樹與右子樹都是平衡二叉樹,並且高度之差的絕對值不超過 1

詳解什麼是平衡二叉樹(AVL)

2-3樹

經過上面的例子,我們可以知道,構建一顆平衡二叉搜尋樹的關鍵在於選取“正確”的根節點, 那麼我們如何在每次構建平衡二叉搜尋樹的時候都能選取合適的根節點呢?這裡就要另一種重要的樹:2-3樹(讀作二三樹),2-3樹和紅黑樹是等價的,理解2-3樹對理解紅黑樹以及B類樹都有很大的幫助。

基本概念