Вы можете пропустить проверку два раза на наличие root.left
и root.right
def value_of_grandchildren(self, root):
sum = 0
if root.left:
if root.left.left:
sum += root.left.left.val
if root.left.right:
sum += root.left.right.val
if root.right:
if root.right.left:
sum += root.right.left
if root.right.right:
sum += root.right.right.val
return sum
Для более простого способа Pythoni c вы можете обобщить функцию для суммирования всех потомков n поколения root.
def value_of_descendants(self, root, n):
sums = 0
if n == 0 and root:
return root.val
if root:
sums += value_of_descendants(self, root.left, n-1)
sums += value_of_descendants(self, root.right, n-1)
return sums
Обратите внимание, что я не проверял это, но вы должны получить общее представление.