# 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:
stack = []
def dfs(node, curString):
if not node:
return
curString += str(node.val)
if not node.left and not node.right: # 리프 노드면
stack.append(int(curString))
dfs(node.left, curString)
dfs(node.right, curString)
dfs(root, "")
return sum(stack)
https://youtu.be/Jk16lZGFWxE?si=Bda3XXK1h8wfwLh-
# 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:
def dfs(cur, num):
if not cur:
return 0
num = num*10 + cur.val
if not cur.left and not cur.right: # 리프 노드면
return num
return dfs(cur.left, num) + dfs(cur.right, num)
return dfs(root, 0)
"""
1
2 3
루드: 0 * 10 + 1 = 1
왼쪽: 1 * 10 + 2 = 12
오른쪽: 1 * 10 + 3 = 13
"""
'LeetCode > Top Interview 150' 카테고리의 다른 글
222. Count Complete Tree Nodes (0) | 2024.12.14 |
---|---|
173. Binary Search Tree Iterator (0) | 2024.12.14 |
Backtracking: 112. Path Sum (0) | 2024.12.13 |
114. Flatten Binary Tree to Linked List (1) | 2024.12.13 |
117. Populating Next Right Pointers in Each Node II (0) | 2024.12.13 |