- 根据key删除某个key-value: .__delitem__(key), O(log(n))
看例子:
>>> btree
BinaryTree({2: 'phone', 5: 'tea', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
>>> btree.__delitem__(5) #删除key=5的key-value,即:5:'tea' 被删除.
>>> btree
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
- 根据key值得到该kye的value: .__getitem__(key)
看例子:
>>> btree
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
>>> btree.__getitem__("blog")
'http://blog.csdn.net/qiwsir'
>>> btree.__getitem__(7)
'computer'
>>> btree._getitem__(5) #在btree中没有key=5,于是报错。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'BinaryTree' object has no attribute '_getitem__'
- 迭代器: .__iter__()
看例子:
>>> btree
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
>>> aiter = btree.__iter__()
>>> aiter
<generator object <genexpr> at 0xb7416dec>
>>> aiter.next() #注意:next()一个之后,该值从list中删除
2
>>> aiter.next()
7
>>> list(aiter)
[9, 'Tom', 'blog']
>>> list(aiter) #结果是空
[]
>>> bool(aiter) #but,is True
True
- 树的数据长度: .__len__(),返回btree的长度。O(1)
看例子:
>>> btree
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree', 'Tom': 'headmaster', 'blog': 'http://blog.csdn.net/qiwsir'})
>>> btree.__len__()
5
- 找出key最大的k-v对: .__max__(),按照key排列,返回key最大的键值对。
- 找出key最小的键值对: .__min__()
看例子:
>>> btree
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree'})
>>> btree.__max__()
(9, 'scree')
>>> btree.__min__()
(2, 'phone')
- 两棵树的关系运算
看例子:
>>> other = [(3,'//www.jb51.net'),(7,'qiwsir')]
>>> bother = BinaryTree() #再建一个树
>>> bother.update(other) #加入数据
>>> bother
BinaryTree({3: '//www.jb51.net', 7: 'qiwsir'})
>>> btree
BinaryTree({2: 'phone', 7: 'computer', 9: 'scree'})
>>> btree.__and__(bother) #重叠部分部分
BinaryTree({7: 'computer'})
>>> btree.__or__(bother) #全部
BinaryTree({2: 'phone', 3: '//www.jb51.net, 7: 'computer', 9: 'scree'})
>>> btree.__sub__(bother) #btree不与bother重叠的部分
BinaryTree({2: 'phone', 9: 'scree'})
>>> btree.__xor__(bother) #两者非重叠部分
BinaryTree({2: 'phone', 3: '//www.jb51.net, 9: 'scree'})










