Я работал над вопросом, который вычисляет суммы каждой ветви двоичного дерева и возвращает их в виде массива. Это в значительной степени проблема DFS, в которой вы накапливаете решения в массиве. Я просто изо всех сил пытаюсь понять, где разместить оператор return в моем коде. Я знаю правильный ответ, я просто не знаю, почему эти два фрагмента ниже не эквивалентны:
def branchTot(root):
soln = []
fin = help(root, root.value, soln)
return fin
def help(root, sums, soln):
if root.left is None and root.right is None:
soln.append(sums)
return soln
else:
if root.right is not None and root.left is not None :
help(root.left, sums + root.left.value, soln)
help(root.right, sums + root.right.value, soln)
elif root.right is not None:
help(root.right, sums + root.right.value, soln)
else:
help(root.left, sums + root.left.value, soln)
и второе решение ниже:
def branchTot(root):
soln = []
fin = help(root, root.value, soln)
return fin
def help(root, sums, soln):
if root.left is None and root.right is None:
soln.append(sums)
else:
if root.right is not None and root.left is not None :
help(root.left, sums + root.left.value, soln)
help(root.right, sums + root.right.value, soln)
elif root.right is not None:
help(root.right, sums + root.right.value, soln)
else:
help(root.left, sums + root.left.value, soln)
return soln