Skip to content

Commit 10bf95e

Browse files
committed
新增DSA内容
1 parent 17588a9 commit 10bf95e

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

docs/02.数据结构与算法.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,74 @@
9494

9595
#### 二叉搜索树
9696

97+
二叉搜索树(Binary Search Tree)是一种对排序和查找都很有用的特殊二叉树
98+
99+
定义:左子树 < 根节点 < 右子树
100+
101+
实现方式:一般用链表实现
102+
103+
操作集:创建二叉树、判断是否为空、遍历、查找、查找最小元素、查找最大元素、插入、删除
104+
105+
时间复杂度:最好 O(logN) 最差 O(N)
106+
97107
#### 平衡二叉树
98108

109+
平衡二叉树(Balanced Binary Tree)又称为 AVL 树,AVL 树的插入、删除、查找操作均可在O(logN)时间内完成
110+
111+
定义:任一结点的左、右子树均为 AVL 树;根节点左、右子树高度差的绝对值不超过1
112+
113+
平衡二叉树的调整:单旋调整、双旋调整
114+
115+
#### 树的应用
116+
117+
堆及其操作、哈夫曼树、集合及其运算
118+
99119
### 5. 散列查找
100120

121+
符号表(SymbolTable)是名字(Name)-属性(Attribute)对的集合,符号表最核心的操作是查找、插入和删除
122+
123+
操作集:创建符号表、查找指定名字是否存在、获取指定名字对应属性、更改指定名字对应属性、插入新名字及其属性、删除名字及其属性
124+
125+
使用散列技术实现符号表的操作集,符号表也叫做`散列表`(Hash Table,即哈希表),散列(Hashing)是一种重要的查找方法
126+
127+
散列函数(哈希函数):在查找数据时,由函数 h 对给定值 key 计算出地址,将 key 与该地址单元中数据对象关键字进行比较,确定查找是否成功。散列法又称为"关键字-地址转换法"
128+
129+
关键字分类:一般把关键字分为`数字型关键字``字符串型关键字`
130+
131+
#### 数字型关键字的散列构造
132+
133+
- 直接定址法
134+
135+
h(key) = a x key + b (a、b为常数)
136+
137+
- 除留余数法
138+
139+
h(key) = key mod p
140+
141+
- 数字分析法
142+
143+
h(key) = atoi(key + 7)
144+
145+
#### 字符串型关键字的散列构造
146+
147+
- ASCII 码加和法
148+
149+
h(key) = (Σkey[i]) mode TableSize
150+
151+
#### 冲突处理
152+
153+
- 开放地址法
154+
155+
开放地址法就是一旦产生了冲突,即该地址已经存放了其它数据元素,就去寻找另一个空的散列地址
156+
157+
- 链地址法
158+
159+
链地址法是将所有关键词为同义词的数据对象通过结点链接存储在同一个单链表中
160+
161+
- 影响冲突的因素
162+
163+
散列函数是否均匀、处理冲突的方法、散列表的装填因子 α
164+
101165
### 6. 图
102166

103167
### 7. 排序

0 commit comments

Comments
 (0)