樹的定義和性質
樹是一種離散結構,表示各個元素或節點之間的層次關係。其中父節點最多隻有兩個子節點的樹稱為二叉樹。
樹及其性質
定義 − 樹是一個連通的無環無向圖。圖G中每對頂點之間都存在一條唯一的路徑。具有N個頂點的樹包含(N-1)條邊。度為0的頂點稱為樹的根。度為1的頂點稱為樹的葉子節點,內部節點的度至少為2。
示例 − 下面是一個樹的示例:
樹的中心和雙中心
樹的中心是偏心率最小的頂點。樹G中頂點X的偏心率是頂點X與樹的任何其他頂點之間的最大距離。最大偏心率是樹的直徑。如果一棵樹只有一箇中心,則稱為中心樹;如果一棵樹有多箇中心,則稱為雙中心樹。每棵樹要麼是中心樹,要麼是雙中心樹。
帶標籤的樹
定義 − 帶標籤的樹是指其頂點被分配了從1到n的唯一編號的樹。我們可以手動計算n較小值時的此類樹的數量,以便推測一個通用公式。具有n個頂點的帶標籤樹的數量是nn-2。如果兩個帶標籤樹的圖是同構的,並且兩棵樹的對應點具有相同的標籤,則這兩個帶標籤的樹是同構的。
示例
無標籤樹
定義 − 無標籤樹是指其頂點未分配任何編號的樹。具有n個頂點的無標籤樹的數量是$\frac {(2n)!}{ (n+1)!n! }$(第n個卡塔蘭數)
示例
有根樹
有根樹G是一個連通的無環圖,它有一個特殊的節點,稱為樹的根,並且每條邊都直接或間接地起源於根。有序有根樹是有根樹,其中每個內部頂點的子節點都是有序的。如果一個有根樹的每個內部頂點最多有m個子節點,則它被稱為m叉樹。如果一個有根樹的每個內部頂點恰好有m個子節點,則它被稱為滿m叉樹。如果m = 2,則有根樹稱為二叉樹。
二叉搜尋樹
二叉搜尋樹是一種滿足以下性質的二叉樹:
- 頂點V的左子樹中的X,Value(X) ≤ Value (V)
- 頂點V的右子樹中的Y,Value(Y) ≥ Value (V)
因此,內部節點V的左子樹的所有頂點的值都小於或等於V,而內部節點V的右子樹的所有頂點的值都大於或等於V。從根節點到最深節點的連結數量是二叉搜尋樹的高度。
示例
在BST中搜索鍵的演算法
BST_Search(x, k) if ( x = NIL or k = Value[x] ) return x; if ( k < Value[x]) return BST_Search (left[x], k); else return BST_Search (right[x], k)
二叉搜尋樹的複雜度
平均情況 | 最壞情況 | |
---|---|---|
空間複雜度 | O(n) | O(n) |
搜尋複雜度 | O(log n) | O(n) |
插入複雜度 | O(log n) | O(n) |
刪除複雜度 | O(log n) | O(n) |
廣告