LINUX.ORG.RU

История изменений

Исправление 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