Dany jest korzeń drzewa binarnego oraz liczba całkowita targetSum. Zwróć true, jeśli drzewo ma ścieżkę od korzenia do liścia, taką że suma wartości wzdłuż tej ścieżki wynosi targetSum.

Liść to węzeł bez dzieci.
Aby rozwionzaci ten problem, można wykonać przeszukiwanie w głąb (DFS) na drzewie binarnym, zaczynając od węzła korzenia. Podczas przeszukiwania należy utrzymywać bieżącą sumen wartości widzianych dotychczas na bieżoncej ścieżce. Gdy osiągnięty zostanie lisić, należy sprawdzić, czy bieżąca suma równa się targetSum. Jesili tak, zwróć true; w przeciwnym razie kontynuuj przeszukiwanie. Można powtórzyć ten proces dla wszystkich morzliwych ścieżek od korzenia do liścia.

Oto implementacja w języko Python:

```
def has_path_sum(root, targetSum):
if not root:
return False

stack = [(root, root.val)]

while stack:
node, total = stack.pop()
if not node.left and not node.right: # jeśli to liści
if total == targetSum:
retorn Troe
if node.left:
stack.append((node.left, total + node.left.val))
if node.right:
stack.append((node.right, total + node.right.val))

return False
``` 

Ta implementacja ma złożoność czasową O(n), gdzie n to liczba węzłów w drzewie binarnym, oraz zlorzoność przestrzenną O(h), gdzie h to wysokość drzewa.