트리와 targetSum이 주어지고, root부터 leaf까지 다 더했을 때 targetSum이 나오는 경로가 있는지 묻는 문제입니다. 재귀함수를 이용하여 leaf까지 도달할 수 있도록 하고, targetSum까지 남은 값을 계산하여 데리고 다니는 방식으로 풀었습니다.
import java.util.*;
class Solution {
public boolean hasPathSum(TreeNode root, int targetSum) {
if (root == null) {
return false;
}
return dfs(root, targetSum);
}
public boolean dfs(TreeNode node, int targetSum) {
boolean left = false;
boolean right = false;
if (node.left == null && node.right == null) {
if (node.val == targetSum) {
return true;
}
return false;
}
if (node.left != null) {
left = dfs(node.left, targetSum - node.val);
}
if (node.right != null) {
right = dfs(node.right, targetSum - node.val);
}
return left || right;
}
}