(TreeNode x, int target, long sum, HashMap<Long, Integer> presum)
| 31 | // sum : 从头节点出发,来到x的时候,上方累加和是多少 |
| 32 | // 路径必须以x作为结尾,路径累加和是target的路径数量,累加到全局变量ans上 |
| 33 | public static void f(TreeNode x, int target, long sum, HashMap<Long, Integer> presum) { |
| 34 | if (x != null) { |
| 35 | sum += x.val; // 从头节点出发一路走到x的整体累加和 |
| 36 | ans += presum.getOrDefault(sum - target, 0); |
| 37 | presum.put(sum, presum.getOrDefault(sum, 0) + 1); |
| 38 | f(x.left, target, sum, presum); |
| 39 | f(x.right, target, sum, presum); |
| 40 | presum.put(sum, presum.get(sum) - 1); |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | } |