From 4fd2b0fd97ccdef1330be03fe272d72e8f3aaa0f Mon Sep 17 00:00:00 2001 From: huihut Date: Thu, 15 Feb 2018 01:23:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=8C=E5=8F=89=E6=A0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 60 +++++++++++++++++++++++++++++++++++++- images/LinkBinaryTree.png | Bin 0 -> 14908 bytes images/SqBinaryTree.png | Bin 0 -> 21152 bytes 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 images/LinkBinaryTree.png create mode 100644 images/SqBinaryTree.png diff --git a/README.md b/README.md index ad65648..813ab87 100644 --- a/README.md +++ b/README.md @@ -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+树 + +#### 红黑树 + +#### 八叉树 + ### 图 ## 算法 diff --git a/images/LinkBinaryTree.png b/images/LinkBinaryTree.png new file mode 100644 index 0000000000000000000000000000000000000000..5d8aa88ae49a6f9cece21f0fce0b8c24585722ef GIT binary patch literal 14908 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

t60|Y< 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 literal 0 HcmV?d00001 diff --git a/images/SqBinaryTree.png b/images/SqBinaryTree.png new file mode 100644 index 0000000000000000000000000000000000000000..81293483ada91e677cee65c0c238dcb6c0563d8d GIT binary patch literal 21152 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 Q8>QiFA8DZaOJ>J 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 literal 0 HcmV?d00001