Ahmad Qassym Ответов: 3

Почему мы должны возвращать -1, если дерево равно нулю ?


class Node:
    def __init__(self,mark,left,right):
        self.mark = mark
        self.left = left
        self.right = right

def height(tree:Node) -> int:
    if (tree is None):
        return -1
    else:
        return (max(height(tree.left),height(tree.right))+1)

tree = Node ('*', Node ('+', Node (6 , None , None ) ,
Node (5 , None , None )) ,
Node (1 , None , None ))


Что я уже пробовал:

для вычисления высоты дерева узлов ... но не знаю почему мы должны возвращать -1 если дерево отсутствует

3 Ответов

Рейтинг:
2

OriginalGriff

Так что max всегда находит более высокие значения ...

Если вы не уверены, почему что-то происходит именно так, посмотрите на код, пока он работает.
К счастью, у вас есть инструмент, который поможет вам сделать это: отладчик. Как вы его используете, зависит от вашей системы компилятора, но быстрый поиск в Google имени вашей IDE и "отладчика" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем вы можете посмотреть на содержимое переменной во время выполнения кода и точно проследить, что она делает, поочередно шагая по каждой строке.


Рейтинг:
2

Patrice T

Цитата:
Почему мы должны возвращать -1, если дерево равно нулю ?

Вероятно, потому, что -1-это невозможный нормальный ответ, просто предположение.
Должно быть очевидно, что -1-это специальный ответ для обработки специального случая.


Рейтинг:
1

Sandeep Mewara

Похоже, это не ваши коды, и вы пытаетесь понять, что они означают. Предполагая это, намерение того, кто написал этот код, состояло бы в том, чтобы иметь некоторое целочисленное значение, которое можно было бы связать с деревом.

Постановка задачи заключается в вычислении высоты дерева. Если есть только корень, вы можете определить его как длину 0 или 1.
если вы определяете это как 0, то -1 будет иметь смысл для несуществующего дерева. Если вы планируете установить длину как 1, то вы также можете установить это значение как 0 для несуществующего дерева.

Это больше похоже на то, что вы хотите определить как длину.