Skip to content

Commit a3597f0

Browse files
committed
8.21 ds modify
1 parent dd303dd commit a3597f0

1 file changed

Lines changed: 74 additions & 3 deletions

File tree

docs/CS/data_structure/data_structure.md

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ typedef struct {
314314
用固定大小的块链表存储,适合大串操作
315315

316316
!!! tip "参考实现"
317-
C语言具体实现可参考 `技术/cpp/cpp_basic.md`
317+
C语言具体实现可参考[cpp](../../Tech/cpp/cpp_basic.md)
318318

319319
### 4.3 KMP算法
320320

@@ -387,8 +387,79 @@ typedef struct {
387387

388388
## ch5. 树与二叉树
389389

390-
!!! todo "待完善内容"
391-
树的基本概念、二叉树的性质与存储、遍历算法、线索二叉树、树与森林、哈夫曼树等
390+
### 5.1 树的基本概念
391+
392+
!!! abstract "树的定义"
393+
树是一个非线性数据结构,由结点和边组成,满足以下性质:
394+
395+
- 有且仅有一个**根结点**
396+
- 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T₁,T₂,...,Tₘ,称为根的**子树**
397+
398+
!!! important "树的特点"
399+
1. 树的根节点没有前驱,除根节点外的所有结点有且只有一个前驱
400+
2. 每个结点有0个或多个后继结点
401+
3. 在n个结点的树中,有且仅有n-1条边
402+
403+
#### 基本术语
404+
405+
!!! note "结点关系术语"
406+
- **祖先(ancestor)**:从根到该结点路径上的所有结点
407+
- **子孙(descendant)**:以该结点为根的子树中的所有结点
408+
- **兄弟(sibling)**:具有相同双亲的结点
409+
- **堂兄弟(cousin)**:双亲在同一层的结点
410+
411+
!!! note "结点分类术语"
412+
- **结点的度**:树的一个结点的孩子个数
413+
- **树的度**:树中结点的最大度数
414+
- **分支结点(branch node)**:又叫非终端结点,度大于0的结点
415+
- **叶结点(leaf node)**:度为0的结点,又称终端结点
416+
417+
!!! note "层次相关术语"
418+
| 术语 | 定义 | 说明 |
419+
|------|------|------|
420+
| **结点的层次** | 根结点为第1层,其子结点为第2层... | 从1开始计数 |
421+
| **结点的深度** | 从根结点到该结点的路径长度 | 根结点深度为0 |
422+
| **结点的高度** | 以该结点为根的子树的高度 | 叶结点高度为0 |
423+
| **树的高度** | 树中结点的最大层数 | 等于根结点的高度+1 |
424+
425+
!!! note "其他重要术语"
426+
- **有序树**:结点的子树从左到右有顺序,不能交换
427+
- **无序树**:结点的子树没有顺序要求
428+
- **路径**:从一个结点到另一个结点经过的结点序列
429+
- **路径长度**:路径上边的个数
430+
- **森林**:m(m≥0)棵互不相交的树的集合
431+
432+
#### 树的性质
433+
434+
!!! tip "树的重要性质"
435+
436+
**性质1:** 结点数与边数关系
437+
438+
树中结点数 = 所有结点的度数之和 + 1
439+
440+
**性质2:** m叉树第i层结点数上界
441+
442+
度为m的树中第i层至多有 $m^{i-1}$ 个结点(i≥1)
443+
444+
**性质3:** m叉树结点总数上界
445+
446+
高度为h的m叉树至多有 $\frac{m^h - 1}{m - 1}$ 个结点
447+
448+
!!! warning "高度计算公式"
449+
**性质4:** m叉树最小高度
450+
451+
度为m、具有n个结点的树的最小高度为:
452+
$$h = \lceil \log_m(n(m-1)+1) \rceil$$
453+
454+
**性质5:** m叉树最大高度
455+
456+
度为m、具有n个结点的树的最大高度为:$h = n - m + 1$
457+
458+
!!! example "性质应用举例"
459+
对于一棵有100个结点的三叉树:
460+
461+
- 最小高度:$h = \lceil \log_3(100 \times 2 + 1) \rceil = \lceil \log_3(201) \rceil = 5$
462+
- 最大高度:$h = 100 - 3 + 1 = 98$
392463

393464
## ch6. 图
394465

0 commit comments

Comments
 (0)