Может ли быть, что отдельные тесты на сайте hackerrank составлены некорректно?
Задача с сайта. Проверить является ли дерево binary search tree. Если не является, то ответ False.
Все тесты с сайта, которые проверяют ответ False показывают, что у моя ф. дает ответ True.
Спецально была написана фнукция, которая формирует дерево в проивольном порядке, т.е. оно не binary search tree. После этого ф. которая проверяет такое дерево, проверялась моим собственым тестом и ответ постоянно False, т.е. такой какой и требуется.
Мне на первый взгляд непонятно, что у меня не так написано. Может, кто подскажет?
def __comp__(self):
l = self.left
r = self.right
if l and r:
if l.right:
extra = l.right
if extra and not extra.data.__lt__(self.data) and not extra.data.__lt__(r.data):
return False, 'NO'
return l.data.__lt__(self.data) and r.data.__gt__(self.data), 'LR'
elif l:
return l.data.__lt__(self.data), 'L'
elif r:
return r.data.__gt__(self.data), 'R'
elif not r and not l:
return True, 'END'
def check_binary_search_tree_(root):
nodes = root.__comp__()
if not nodes[0]: return False
dic = dict()
if 'L' in nodes[1]: dic[root.left] = 'lwing'
if 'R' in nodes[1]: dic[root.right] = 'rwing'
while dic:
new_dic = dict()
for node in dic:
nodes = node.__comp__()
if not nodes[0]: return False
if 'R' in nodes[1]:
new_dic[node.right] = dic[node]
if new_dic[node.right] == 'lwing' and not node.right.__lt__(root):
return False
if 'L' in nodes[1]:
new_dic[node.left] = dic[node]
if new_dic[node.left] == 'rwing' and not node.left.__gt__(root):
return False
dic = new_dic
return True
def Checker(tree, func):
assert func(tree)==False
return 'OK'
print(Checker(form_tree(ls),check_binary_search_tree_))