# 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 hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
# DFS로..
def dfs(node, curSum):
if not node:
return False
curSum += node.val
# not node.left and not node.right: 왼쪽, 오른쪽 둘다 없으면: 리프 노드임
if not node.left and not node.right:
# 리프 노드에서 현재까지의 curSum 이 targetSum 와 같으면 True
return curSum == targetSum
return (dfs(node.left, curSum) or
dfs(node.right, curSum))
return dfs(root, 0)
https://youtu.be/LSKQyOz_P8I?si=C5_7xA-Yqq7ZBMfV
이제 풀림
# 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 hasPathSum(self, root: Optional[TreeNode], targetSum: int) -> bool:
# root에서 leaf 까지 sum 중 targetSum 이 있으면 True, 아니면, false
def dfs(node, pathsum):
if not node: # 없으면
return False
if not node.left and not node.right and ((pathsum + node.val) == targetSum): # 리프노드면
return True
if dfs(node.left, pathsum + node.val): # true 면
return True
if dfs(node.right, pathsum + node.val): # true 면
return True
return False
return dfs(root, 0)
'LeetCode > Top Interview 150' 카테고리의 다른 글
173. Binary Search Tree Iterator (0) | 2024.12.14 |
---|---|
129. Sum Root to Leaf Numbers (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 |
106. Construct Binary Tree from Inorder and Postorder Traversal (0) | 2024.12.13 |