更新二叉树

This commit is contained in:
huihut 2018-02-15 01:23:27 +08:00
parent f9e6dcc940
commit 4fd2b0fd97
3 changed files with 59 additions and 1 deletions

View File

@ -227,10 +227,68 @@ typedef struct GLNode1 {
### 二叉树
### 三叉树
#### 性质
1. 非空二叉树第 i 层最多 2^(i-1) 个结点 (i >= 1)
2. 深度为 k 的二叉树最多 2^k - 1 个结点 (k >= 1)
3. 度为 0 的结点数为 n0度为 2 的结点数为 n2则 n0 = n2 + 1
4. 有 n 个结点的完全二叉树深度 k = ⌊ log2(n) ⌋ + 1
5. 对于含 n 个结点的完全二叉树中编号为 i (1 <= i <= n) 的结点
1. 若 i = 1为根否则双亲为 ⌊ i / 2 ⌋
2. 若 2i > n则 i 结点没有左孩子,否则孩子编号为 2i + 1
3. 若 2i + 1 > n则 i 结点没有右孩子,否则孩子编号为 2i + 1
#### 存储结构
##### 顺序存储
![](images/SqBinaryTree.png)
##### 链式存储
![](images/LinkBinaryTree.png)
#### 遍历方式
* 先序遍历
* 中序遍历
* 后续遍历
* 层次遍历
#### 分类
* 满二叉树
* 完全二叉树(堆)
* 大顶堆:根 >= 左 && 根 >= 右
* 小顶堆:根 <= 左 &&<= 右
* 二叉查找树(二叉排序树):左 < <
* 平衡二叉树AVL树| 左子树树高 - 右子树树高 | <= 1
* 最小失衡树:平衡二叉树插入新结点导致失衡的子树:调整:
* LL型根的左孩子右旋
* RR型根的右孩子左旋
* LR型根的左孩子左旋再右旋
* RL型右孩子的左子树先右旋再左旋
### 森林
#### 树的存储结构
* 双亲表示法
* 双亲孩子表示法
* 孩子兄弟表示法
#### 并查集
一种不相交的子集所构成的集合 S = {S1, S2, ..., Sn}
#### B树
#### B+树
#### 红黑树
#### 八叉树
### 图
## 算法

BIN
images/LinkBinaryTree.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/SqBinaryTree.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB