Ну во-первых, прочтите ошибку: P. У вас есть синтаксическая ошибка в строке 4 и отсутствует :
в конце вашего def.
Что касается вашего алгоритма, не совсем уверен, почему у вас есть функция nodeDepths
, это не очень помогает.
Для вашей функции depthSum
сразу же ваш алгоритм никогда не завершится, поскольку вы застряли в бесконечном рекурсивном l oop - вы никогда не пересекаете дерево из-за использования root
вместо node
в вашей функции depthSum.
Взгляните на это, это простой способ проверить глубину:
def traverse(root, depth=0):
if root:
return max(traverse(root.left, depth+1), traverse(root.right, depth+1))
и просто вызвать его напрямую с помощью
traverse(root)
Я не вижу варианта использования функции nodeDepths.