Skip to content

Commit efe7f5f

Browse files
committed
python中的二叉树模块
1 parent b103e3c commit efe7f5f

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

binary_tree_python.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
6969
<class 'bintrees.bintree.BinaryTree'>
7070

7171
- 逐个增加键值对:.__setitem__(k,v) .复杂度O(log(n))(后续说明中,都会有复杂度标示,为了简单,直接标明:O(log(n)).)
72-
72+
73+
看例子:
74+
7375
>>> btree.__setitem__("Tom","headmaster")
7476
>>> btree
7577
BinaryTree({'Tom': 'headmaster'})
@@ -79,13 +81,17 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
7981

8082
- 批量添加:.update(E) E是dict/iterable,将E批量更新入btree. O(E*log(n))
8183

84+
看例子:
85+
8286
>>> adict = [(2,"phone"),(5,"tea"),(9,"scree"),(7,"computer")]
8387
>>> btree.update(adict)
8488
>>> btree
8589
BinaryTree({2: 'phone', 5: 'tea', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
8690

8791
- 查找某个key是否存在:.__contains__(k) 如果含有键k,则返回True,否则返回False. O(log(n))
8892

93+
看例子:
94+
8995
>>> btree
9096
BinaryTree({2: 'phone', 5: 'tea', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
9197
>>> btree.__contains__(5)
@@ -99,6 +105,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
99105

100106
- 根据key删除某个key-value:.__delitem__(key), O(log(n))
101107

108+
看例子:
109+
102110
>>> btree
103111
BinaryTree({2: 'phone', 5: 'tea', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
104112
>>> btree.__delitem__(5) #删除key=5的key-value,即:5:'tea' 被删除.
@@ -107,6 +115,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
107115

108116
- 根据key值得到该kye的value:.__getitem__(key)
109117

118+
看例子:
119+
110120
>>> btree
111121
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
112122
>>> btree.__getitem__("blog")
@@ -120,6 +130,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
120130

121131
- 迭代器:.__iter__()
122132

133+
看例子:
134+
123135
>>> btree
124136
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
125137
>>> aiter = btree.__iter__()
@@ -138,6 +150,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
138150

139151
- 数的数据长度:.__len__(),返回btree的长度。O(1)
140152

153+
看例子:
154+
141155
>>> btree
142156
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
143157
>>> btree.__len__()
@@ -147,6 +161,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
147161

148162
- 找出key最小的键值对:.__min__()
149163

164+
看例子:
165+
150166
>>> btree
151167
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree'})
152168
>>> btree.__max__()
@@ -156,6 +172,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
156172

157173
- 两棵树的关系运算
158174

175+
看例子:
176+
159177
>>> other = [(3,'http://blog.csdn.net/qiwsir'),(7,'qiwsir')]
160178
>>> bother = BinaryTree() #再建一个树
161179
>>> bother.update(other) #加入数据
@@ -179,13 +197,17 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
179197

180198
- 输出字符串模样,注意仅仅是输出的模样罢了:.__repr__()
181199

200+
看例子:
201+
182202
>>> btree
183203
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree'})
184204
>>> btree.__repr__()
185205
"BinaryTree({2: 'phone', 7: 'computer', 9: 'scree'})"
186206

187207
- 清空树中的所有数据:.clear(),O(log(n))
188208

209+
看例子:
210+
189211
>>> bother
190212
BinaryTree({3: 'http://blog.csdn.net/qiwsir', 7: 'qiwsir'})
191213
>>> bother.clear()
@@ -196,6 +218,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
196218

197219
- 浅拷贝:.copy(),官方文档上说是浅拷贝,但是我做了操作实现,是下面所示,还不是很理解其“浅”的含义。O(n*log(n))
198220

221+
看例子:
222+
199223
>>> btree
200224
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree'})
201225
>>> ctree = btree.copy()
@@ -216,6 +240,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
216240

217241
- 移除树中的一个数据:.discard(key),这个功能与.__delitem__(key)类似.两者都不反悔值。O(log(n))
218242

243+
看例子:
244+
219245
>>> ctree
220246
BinaryTree({2: 'phone', 9: 'scree'})
221247
>>> ctree.discard(2) #删除后,不返回值,或者返回None
@@ -234,6 +260,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
234260

235261
- 根据key查找,并返回或返回备用值:.get(key[,d])。如果key在树中存在,则返回value,否则如果有d,则返回d值。O(log(n))
236262

263+
看例子:
264+
237265
>>> btree
238266
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'github': 'qiwsir'})
239267
>>> btree.get(2,"algorithm")
@@ -245,6 +273,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
245273

246274
- 判断树是否为空:is_empty().根据树数据的长度,如果数据长度为0,则为空。O(1)
247275

276+
看例子:
277+
248278
>>> ctree
249279
BinaryTree({9: 'scree'})
250280
>>> ctree.clear() #清空数据
@@ -264,6 +294,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
264294
>>.values([reverse])--value. O(n)
265295
>>.iter_items(s,e[,reverse]--s,e是key的范围,也就是生成在某个范围内的key的迭代器 O(n)
266296
297+
看例子:
298+
267299
>>> btree
268300
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'github': 'qiwsir'})
269301
>>> for (k,v) in btree.items():
@@ -310,6 +342,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
310342
>>.pop(key[,d]), 根据key删除树的数据,并返回该value,但是如果没有,并也指定了备选返回的d,则返回d,如果没有d,则报错;
311343
>>.pop_item(),在树中随机选择(key,value)删除,并返回。
312344
345+
看例子:
346+
313347
>>> ctree = btree.copy()
314348
>>> ctree
315349
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'github': 'qiwsir'})
@@ -335,6 +369,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
335369

336370
- 查找数据,并返回value:.set_default(key[,d]),在树的数据中查找key,如果存在,则返回该value。如果不存在,当指定了d,则将该(key,d)添加到树内;当不指定d的时候,添加(key,None). O(log(n))
337371

372+
看例子:
373+
338374
>>> btree
339375
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'github': 'qiwsir'})
340376
>>> btree.set_default(7) #存在则返回
@@ -361,6 +397,8 @@ bintrees提供了丰富的API,涵盖了通常的多种应用。下面逐条说
361397
>>.remove(key),删除(key,value)
362398
>>.remove_items(keys),keys是一个key组成的list,逐个删除树中的对应数据
363399
400+
看例子:
401+
364402
>>> ctree
365403
BinaryTree({2: 'phone', 5: None, 7: 'computer', 8: 'eight', 9: 'scree', 'github': 'qiwsir'})
366404
>>> ctree.remove_items([5,6]) #key=6,不存在,报错

0 commit comments

Comments
 (0)