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
будет работать просто отлично и будет более кратким.