class Node:
def __init__(self, left=None, data=None, right=None):
self.left = left
self.data = data
self.right = right
class SearchTree:
def __init__(self):
self.root = None
# 创建搜索树(左边小于根节点,右边大于根节点)
# 默认列表的第一个最小
def create_search_tree(self, array):
self.root = Node(data=array[0])
for i in range(len(array)):
self.add_node(node=self.root, data=array[i])
def add_node(self, node, data):
if self.root is None:
self.root = Node(data=data)
if node.left is None and node.data > data:
new_node = Node(data=data)
node.left = new_node
return 0
if node.right is None and node.data < data:
new_node = Node(data=data)
node.right = new_node
return 0
if node.data == data:
return 0
if node.right is not None and node.data < data:
self.add_node(node.right, data)
if node.left is not None and node.data > data:
self.add_node(node.left, data)
def displayPre(node):
if node is not None:
print(node.data, end=', ')
displayPre(node.left)
displayPre(node.right)
def displayIn(node):
if node is not None:
displayIn(node.left)
print(node.data, end=', ')
displayIn(node.right)
if __name__ == '__main__':
# the_array = [eval(i) for i in input("输入一系列数字(空格隔开)").split(' ')]
the_array = [1, 0, 2, 3, 4]
Tree = SearchTree()
Tree.create_search_tree(array=the_array)
print("先序:", end='')
displayPre(Tree.root)
print()
print("中序:", end='')
displayIn(Tree.root)
Tree.add_node(Tree.root, 4)
print()
print("先序:", end='')
displayPre(Tree.root)
print()
print("中序:", end='')
displayIn(Tree.root)
默认列表第一个最小,你可以根据我的注释来改,有用的话点一下采纳