При выполнении кода я получаю следующую ошибку - EOFError: EOF при чтении строки - PullRequest
0 голосов
/ 07 мая 2020

Я написал следующий код, чтобы создать двоичное дерево поиска из заданного ввода и найти минимальное значение дерева.

Входные данные:

Первая строка ввода содержит число тестовых случаев T. Для каждого тестового примера будет только одна строка ввода, которая представляет собой строку, представляющую дерево, как описано ниже:

Пример:

2
5 4 6 3 N N 7 1
9 N 10 N 11

Значения в строка находится в порядке обхода порядка уровней в дереве, где числа обозначают значения узлов, а символ «N» обозначает дочерний элемент NULL.

Вот ссылка на проблему: Минимальный элемент в BST .

class node:
    def __init__(self,value):
        self.val=value
        self.left=None
        self.right=None

    class BST:
        def __init__(self,value):
            self.root=node(value)

        def insert(self,value):
            if self.root==None:
                self.root=node(value)
            else:
                self._insert(value,self.root)

        def _insert(self,value,curr):
            if value<curr.val:
                if curr.left==None:
                    curr.left=node(value)
                else:
                    self._insert(value,curr.left)
            elif value>curr.val:
                if curr.right==None:
                    curr.right=node(value)
                else:
                    self._insert(value,curr.right)

        def print_tree(self):
            if self.root!=None:
                self._print_tree(self.root)

        def _print_tree(self,cur_node):
            if cur_node!=None:
                self._print_tree(cur_node.left)
                print (str(cur_node.val))
                self._print_tree(cur_node.right)

        def min_val(self):
            if self.root==None:
                return -1
            else:
                self._min_val(self.root)

        def _min_val(self,curr_node):
            if curr_node.left==None:
                print(curr_node.val)
            else:
                self._min_val(curr_node.left)
        ##Your code here

    t=int(input())        #number of test cases
    for j in range(t):
        a=input()
        lst=a.split(" ")
        root=int(lst[0])
        tree=BST(root)
        for i in range(1,len(lst)):
            if lst[i]!=N:
                tree.insert(int(lst[i]))

        tree.min_val()

Где я ошибаюсь? Всякий раз, когда я запускаю код, он говорит об ошибке EOF. Но тот же код отлично работает в моей среде IDE с настраиваемыми входами.

1 Ответ

1 голос
/ 07 мая 2020

Для начала, у вас есть некоторые синтаксические ошибки:

if lst[i]!=N:

->

if lst[i] != 'N':
class node:
def __init__(self,value):

->

class node:
    def __init__(self,value):

Также вы можете поделиться полученной ошибкой?

EDIT:
Глядя на вопрос:

Задача состоит в том, чтобы завершить функцию minValue (), которая принимает root в качестве аргумента и возвращает минимальный элемент BST.

Вы должны предоставить только minValue(root) и ничего больше. Чтение ввода будет выполняться за вас тестовой системой.

...