怎么用python实现这个问题?

blem 5.1. Build Binary Search Tree
Time limit: 1 s
Memory limit: 256 MB

Given a sequence of integers vi.Binary search tree T is built from vi by the insertion of value v1, v2 …vn in that order.
Build the tree T and output its vertices level by level.We assume that all keys are unique in the search tree.
So when you try to add a key that is already in the tree, it should be ignored.
Input
The input contains a sequence of numbers vi, the keys of the vertices in the order of insertion into the tree.
Each line contains a single number.
Output
Print as many lines as there are levels in the tree T.
In each line print the keys of the corresponding level vertices in ascending order.

img


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)

img


默认列表第一个最小,你可以根据我的注释来改,有用的话点一下采纳

平衡二叉树,建议学习相关知识再来自己写一下