class Tree:本身自然需要维护根节点(root),用于指向树的第一个节点
class Tree:
root = None
class Node:每一个节点都要维护左子树、右子树
class Node:
lft = None
rgt = None
一棵二叉搜索树最为重要的两个使命是:插入和搜索,插入最终返回的是当前节点。
class Node:
lft = None
rgt = None
def __init__(self, key, val):
self.key = key
self.val = val
def insert(node, key, value):
# 返回插入后的节点
if node: return new Node(key, value)
if node.key < key:
return insert(node.rgt, key, value)
return insert(node.lft, key, value)
def search(node, key):
if node is None: raise KeyError
if node.key == key:
return node.val
if node.key < key:
return search(node.rgt, key)
return search(node.lft, key)
class Tree:
root = None
def __getitem__(self, key):
return search(self.root, key)
def __setitem__(self, key, value):
insert(self.root, key, value)
def __contains__(self, key):
try:
search(self.root, key)
return True
except KeyError:
return False