NODE_LIST = [
{'data': 60, 'left': 12, 'right': 90, 'is_root': True},
{'data': 12, 'left': 4, 'right': 41, 'is_root': False},
{'data': 4, 'left': 1, 'right': None, 'is_root': False},
{'data': 1, 'left': None, 'right': None, 'is_root': False},
{'data': 41, 'left': 29, 'right': None, 'is_root': False},
{'data': 29, 'left': 23, 'right': 37, 'is_root': False},
{'data': 23, 'left': None, 'right': None, 'is_root': False},
{'data': 37, 'left': None, 'right': None, 'is_root': False},
{'data': 90, 'left': 71, 'right': 100, 'is_root': False},
{'data': 71, 'left': None, 'right': 84, 'is_root': False},
{'data': 100, 'left': None, 'right': None, 'is_root': False},
{'data': 84, 'left': None, 'right': None, 'is_root': False},
]
class Node():
def __init__(self, date, left=None, right=None):
self.date = date
self.left = left
self.right = right
def __str__(self):
return "数据是:{}".format(self.date)
class Tree():
def __init__(self, root=None):
self.root = root
def install_date(self, dates):
node_list = {}
for n in dates:
node = Node(n['data'], n['left'], n['right'])
node_list[n['data']] = node
for m in dates:
node = node_list[m['data']]
if node.left:
node.left = node_list[node.left]
if node.right:
node.right = node_list[node.right]
if m["is_root"]:
self.root = node
def search(self, subtree, value):
if subtree is None:
return None
elif subtree.date > value:
return self.search(subtree.left, value)
elif subtree.date < value:
return self.search(subtree.right, value)
else:
return subtree
def iter_node(self, node):
if node:
print(node.date)
self.iter_node(node.left)
self.iter_node(node.right)
def get_min(self, subtree):
if subtree is None:
return None
elif subtree.left:
return self.get_min(subtree.left)
else:
return subtree
def add(self, value):
node = self.search(self.root, value)
if node:
return False
else:
self.root = self.insert_data(self.root,value)
return True
def insert_data(self, subtress, value):
if subtress is None:
subtress = Node(value)
elif subtress.date > value:
subtress.left = self.insert_data(subtress.left, value)
else:
subtress.right = self.insert_data(subtress.right, value)
return subtress
老师,我这里为啥曝出 重复代码片段,我找不到哪里重复了