Python: максимальная глубина в двоичном дереве

Я только что познакомился с открытыми и двоичными деревьями в Python, но столкнулся с проблемами, пытаясь реализовать метод максимальной глубины. Это не дает мне правильного ответа, оно дает мне 1, тогда как число должно быть намного больше, или, может быть, я что-то совершенно не понимаю. Я добавил часть моего кода ниже

class Node:
def __init__(self, value, left=None, right=None):
    self.left = left
    self.right = right
    self.value = value
    self.count = 1

    def depth(self):
        if self.left:
            left_depth = self.left.depth()
        else:
            left_depth = 0
        right_depth = self.right.depth() if self.right else 0

        print(max(left_depth, right_depth) + 1)



tree = createTree(words) # list of words
tree.depth()

1 ответ

Решение
        print(max(left_depth, right_depth) + 1)

должно быть...

        return max(left_depth, right_depth) + 1

так что ваш .depth() Метод на самом деле возвращает значение при вызове.

Затем, в конце, когда вы действительно хотите результат:

print(tree.depth())

Также немного странно, что вы используете две разные конструкции if-else.

        left_depth = self.left.depth() if self.left else 0
        right_depth = self.right.depth() if self.right else 0

будет работать просто отлично и будет более кратким.

Другие вопросы по тегам