- categories: Code, Interview Question, leetcode, Medium
- source: https://leetcode.com/problems/sum-root-to-leaf-numbers
- topics: Tree, DFS
You are given the root
of a binary tree containing digits from 0
to 9
only.
Each root-to-leaf path in the tree represents a number.
- For example, the root-to-leaf path
1 -> 2 -> 3
represents the number123
.
Return the total sum of all root-to-leaf numbers. Test cases are generated so that the answer will fit in a 32-bit integer.
A leaf node is a node with no children.
Idea
dfs
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def sumNumbers(self, root: Optional[TreeNode]) -> int:
ans = 0
def dfs(node, suffix):
nonlocal ans
suffix += str(node.val)
if not node.left and not node.right:
ans += int(suffix)
return
if node.left:
dfs(node.left, suffix)
if node.right:
dfs(node.right, suffix)
dfs(root, "0")
return ans