public boolean hasPathSum (TreeNode root, int sum) {
        dfs(root, sum);
        return flag;
    }
    public void dfs(TreeNode root, int rest ){    //rest记录剩余值
        if(root == null || flag) return;

        //当叶节点的值与剩余值相等时,true
        if(root.val == rest &&  root.left == null && root.right == null){ 
            flag = true;
            return;
        }
        dfs(root.left , rest - root.val);
        dfs(root.right , rest - root.val);   
    }