守望_sy 2021-12-25 18:50 采纳率: 63.2%
浏览 76
已结题

怎么用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

  • 写回答

2条回答 默认 最新

  • 鸡蛋酱$ 2021-12-25 21:05
    关注
    获得0.90元问题酬金
    
    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


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

    评论

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 修改了问题 12月25日
  • 修改了问题 12月25日
  • 修改了问题 12月25日
  • 展开全部

悬赏问题

  • ¥15 C++为什么这个代码没报错运行不出来啊
  • ¥15 为什么跑这个代码,文件显示不在呀
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?