Я пытаюсь отправить проблему с кодом, но грейдер не принимает мой результат.Я не вижу тестовый пример, я вижу только сообщение об ошибке, в котором указано неизвестное signal 11 (Time used: 0.81/10.00, memory used: 101203968/536870912.)
Я знаю, что в сигнале № 11 в Linux обозначена ошибка сегментации.Но я не могу понять, что не так с моим кодом.Другие тестовые случаи выполняются без проблем.Поэтому я думаю, что это в основном проблема проектирования.
#!/usr/bin/python3
import sys, threading
sys.setrecursionlimit(10**7) # max depth of recursion
threading.stack_size(2**25) # new thread will get stack of such size
def IsBinarySearchTree(tree):
# Implement correct algorithm here
min = -sys.maxsize
max = sys.maxsize
def is_bst_until(idx_node,maxi,mini):
if idx_node == -1:
return True
node = tree[idx_node]
key = node[0]
idx_left = node[1]
idx_right = node[2]
#print('max',maxi, "min", mini)
if (key>maxi) or (key<mini):
#print("False", key, maxi,mini)
return False
return (is_bst_until(idx_right, maxi, key+1)) and (is_bst_until(idx_left, key-1, mini))
#print(tree)
if len(tree) == 0:
return True
return is_bst_until(0, max, min)
def main():
nodes = int(sys.stdin.readline().strip())
tree = []
for i in range(nodes):
tree.append(list(map(int, sys.stdin.readline().strip().split())))
if IsBinarySearchTree(tree):
print("CORRECT")
else:
print("INCORRECT")
threading.Thread (target = main) .start () Входные данные: Первая строка содержит количество вершин ?.Вершины дерева пронумерованы от 0 до ? − 1.Вершина 0 является корнем.Следующие ? строки содержат информацию о вершинах 0, 1, ..., ? - 1 по порядку.Каждая из этих строк содержит три целых числа ????, ????? и ???h?? - ???? является ключом ver-й вершины, ????? является индексом левого потомка ?-й вершины, а ???h?? является индексом правого потомкаver-я вершина.Если у ? нет левого или правого потомка (или обоих), соответствующие ????? или ???h?? (или оба) будут равны -1.
Вывод: Если данное двоичное дерево является правильным деревом двоичного поиска(см. определение в описании проблемы), выведите одно слово «ПРАВИЛЬНО» (без кавычек).В противном случае выведите одно слово «НЕПРАВИЛЬНО» (без кавычек).
Examples:
3
1 1 2
2 -1 -1
3 -1 -1
INCORRECT
3
2 1 2
1 -1 -1
3 -1 -1
CORRECT
Проблема может указывать на то, что глубина стека является потенциальной проблемой, и, следовательно, рекурсия не является жизнеспособной стратегией для обработки больших случаев.
Но я не уверен.Буду признателен за ваши мнения по поводу этой проблемы, прежде чем рефакторинг кода.