I am working on Leetcode question 437 Path Sum III, and solving it use DFS on java:

```
    public static class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int x) { val = x; }
    }

    public static int pathSum(TreeNode root, int sum) {
        return dfs(root, sum)+pathSum(root.left, sum)+pathSum(root.right, sum);
    }

    public static int dfs(TreeNode root, int sum) {
        if (root == null) return 0;
        int count = 0;
        if (root.val == sum) count++;

        count += dfs(root.left, sum - root.val);
        count += dfs(root.right, sum - root.val);

        return count;
    }

```

In the return statement of pathSum() method, why we need "dfs(root, sum)+dfs(root.left, sum)+dfs(root.right, sum)", not simply "dfs(root, sum)(this one returns wrong answer)"? 
Someone explains that is because "The path does not need to start or end at the root or a leaf "(from lc437). If so, then why we only need to also only check root's children, not also the children of root's children?