今天再抽空,把其它的整完,完全按照教材思路来编写,所以可能效率会差,或者编码技巧性不强,大家自己完善吧,教材上的代码不好处理空树的情况,所以我们这里加了个小小的判断,每次找根节点,从根节点出发查找。
- BST上查找——最小值:
find_min()
,这个只要记住BST上节点值最小的就是树上最左边的节点。就一直找左边,直到某个没有左子的节点为止,就是要找的东东了
def find_min(self, *args): # 查找BST上最小值:其实就是树上最左边的节点
if len(args) == 0: # 没给出参数,则找到BST的根节点
node = self.Root
else: #否则找到当前节点作为根节点
node = args[0]
if not node.left: #直到某个没有左子的节点为止,该节点就是最小的点
return node
else:
return self.find_min(node.left)
测试代码:
print("The minimum value in this BST is %d" % tree.find_min().key)
测试结果,课本例子:
The minimum value in this BST is 39
- BST上查找——最大值:
find_max()
,废话不说了,就是