二叉查找树,左边的子节点比父节点的数值小,右边的子节点比父节点的数值大
代码大体如下,有错误
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)

京公网安备 11010502036488号