二叉查找树,左边的子节点比父节点的数值小,右边的子节点比父节点的数值大
代码大体如下,有错误
node_list = [ {'key': '60', 'left': '12', 'right': '90', 'is_root': True}, {'key': '12', 'left': '4', 'right': '41', 'is_root': False}, {'key': '4', 'left': '1', 'right': 'None', 'is_root': False}, {'key': '1', 'left': 'None', 'right': 'None', 'is_root': False}, {'key': '41', 'left': '29', 'right': 'None', 'is_root': False}, {'key': '29', 'left': '23', 'right': '37', 'is_root': False}, {'key': '23', 'left': 'None', 'right': 'None', 'is_root': False}, {'key': '37', 'left': 'None', 'right': 'None', 'is_root': False}, {'key': '90', 'left': '71', 'right': '100', 'is_root': False}, {'key': '71', 'left': 'None', 'right': '84', 'is_root': False}, {'key': '100', 'left': 'None', 'right': 'None', 'is_root': False}, {'key': '84', 'left': 'None', 'right': 'None', 'is_root': False} ] class Node: def __init__(self, key, left=None, right=None): self.data, self.right, self.left, = key, right, left class Tree: def __init__(self, root=None): self.root = root def init_data(self, datas): node_dict = {} for d in datas: node = Node(d['key'], d['left'], d['right']) node_dict[d['key']] = node for d in datas: node = node_dict[d['key']] if node.left: node.left = node_dict[node.left] if node.right: node.right = node_dict[node.right] if d['is_root']: self.root = node def search(self, value): if self.root is None: return None elif self.root.key > value: self.root.left.key > value if __name__ = "__main__": tree = Tree() tree.init_data(node_list) tree.search(66)