void dfsHelper(TreeNode root, int sum, List<List<Integer>> rst, List<Integer> tmpPath) {
      if(root == null) {
          return;
      }
      
      if(root.val == sum && root.left == null && root.right == null) {
          tmpPath.add(root.val);
          rst.add(new ArrayList<Integer>(tmpPath));
          tmpPath.remove(tmpPath.size() - 1);
          return;
      }
      
      tmpPath.add(root.val);
      dfsHelper(root.left, sum - root.val, rst, tmpPath);
      dfsHelper(root.right, sum - root.val, rst, tmpPath);
      tmpPath.remove(tmpPath.size() - 1);
  }