import java.util.*;

public class Solution {

    // 二叉树中和为某一值的路径
    // dfs 遍历树的路径,如果没有就回溯
    // 题中路径定义为从树的根节点一直到叶子结点所经过的结点
    public boolean hasPathSum (TreeNode root, int sum) {
        // write code here
        if(root == null) return false;
        // 判断是否为叶子结点,同时判断当到达叶子结点时,整个路径上的结点和是否等于sum
        if(root.left == null && root.right == null && sum - root.val == 0){
            return true;
        }

        // 分别遍历左右子树,注意每次进入下一层结点都要减去当前节点的值
        return hasPathSum(root.left,sum - root.val) || hasPathSum(root.right, sum - root.val);
        

    }
}