Я написал следующий код, чтобы создать двоичное дерево поиска из заданного ввода и найти минимальное значение дерева.
Входные данные:
Первая строка ввода содержит число тестовых случаев 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 с настраиваемыми входами.