import java.util.*;


public class Solution {

    int res = 0;
    // 该题路径定义:不需要从根节点开始,也不需要在叶子结点结束
    // 遍历每一棵树及子树
    public int FindPath (TreeNode root, int sum) {
        // write code here
        if(root == null){
            return res;
        }
        // 查询以某节点为根的路径数
        dfs(root,sum);

        // 再以子节点为根,遍历整棵树
        FindPath(root.left,sum);
        FindPath(root.right,sum);

        return res;
    }

    public void dfs(TreeNode root, int sum){
        if(root == null) return;
        if(sum - root.val == 0){
            res++;
        }
        dfs(root.left,sum - root.val);
        dfs(root.right,sum - root.val);
    }
}