資料結構--二叉樹
阿新 • • 發佈:2021-12-30
術語
- 節點的深度: 對於任意節點 n, n 的深度為從根到 n 的唯一路徑長, 根的深度為 0;
- 節點的高度: 對於任意節點 n, n 的高度為從 n 到一片樹葉的最長路徑長, 所有樹葉的高度為 0;
- 樹的深度: 樹中所有節點的最大深度, 稱作樹的深度;
- 樹的高度: 樹的高度等於它的根節點的高度;
- 結點的度(Degree): 結點擁有的子樹數目稱為結點的度;
樹的種類
有序樹: 樹中任意節點的子節點之間有順序關係, 這種樹稱為有序樹;
- 二叉樹: 每個節點最多含有兩個子樹的樹稱為二叉樹;
- 完全二叉樹: 對於一棵二叉樹, 假設其深度為d(d>1). 除了第d層外, 其它各層的節點數目均已達最大值, 且第d層所有節點從左向右連續地緊密排列, 這樣的二叉樹被稱為完全二叉樹;
- 滿二叉樹: 所有葉節點都在最底層的完全二叉樹;
- 平衡二叉樹(AVL樹): 當且僅當任何節點的兩棵子樹的高度差不大於1的二叉樹;
- B樹: 一種對讀寫操作進行優化的自平衡的二叉查詢樹, 能夠保持資料有序, 擁有多於兩個子樹.
平衡二叉樹
假設一顆 AVL 樹的某個節點為 A, 有四種操作會使 A 的左右子樹高度差大於 1, 從而破壞了原有 AVL 樹的平衡性.
平衡二叉樹插入節點的情況分為以下四種:
插入方式 | 描述 | 旋轉方式 |
LL | 在 A 的左子樹根節點的左子樹上插入節點而破壞平衡 | 右旋轉 |
RR | 在 A 的右子樹根節點的右子樹上插入節點而破壞平衡 | 左旋轉 |
LR | 在 A的左子樹根節點的右子樹上插入節點而破壞平衡 | 先左旋後右旋 |
RL | 在 A的右子樹根節點的左子樹上插入節點而破壞平衡 | 先右旋後左旋 |
平衡二叉樹的失衡調整主要是通過旋轉最小失衡子樹來實現的.