История изменений
Исправление i-rinat, (текущая версия) :
Зачем так сложно? Можно же рекурсивно проверить свойство bst. Для каждого узла ключ левого потомка должен быть меньше ключа узла, а ключ правого потомка должен быть больше ключа узла. Потомки тоже должны быть bst:
def bst(node):
if node.left:
if node.left.key >= node.key:
return False
if not bst(node.left):
return False
if node.right:
if node.right.key <= node.key:
return False
if not bst(node.right):
return False
return True
И зачем ты вызываешь методы типа __gt__
? Они как раз и нужны, чтобы можно было просто сравнивать, с помощью <
, =
и >
.
Исходная версия i-rinat, :
Зачем так сложно? Можно же рекурсивно проверить свойство bst. Для каждого узла ключ левого потомка должен быть меньше ключа узла, а ключ правого потомка должен быть больше ключа узла. Потомки тоже должны быть bst:
def bst(node):
if node.left:
if node.left.key >= node.key:
return False
if not bst(node.left):
return False
if node.right:
if node.right.key <= node.key:
return False
if not bst(node.right):
return False
return True