题目
给定一个二叉树的根节点root ,和一个整数targetSum ,求该二叉树里节点值之和等于targetSum的 路径的数目
路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)
输入:root = [10, 5, -3, 3, 2, nil, 11, 3, -2, nil, 1], targetSum = 8输出:3
代码:
/*** 参考力扣,牛逼的思想* @param root* @param sum* @return*/public int pathSum(TreeNode root, int sum) {target = sum;map.put(0, 1);return getNodeCount(root, 0);}public int getNodeCount(TreeNode<Integer> root,int sum){if(root==null){return 0;}sum+=root.getData();int count=map.getOrDefault(sum-target,0);map.put(sum, map.getOrDefault(sum,0)+1);int leftSum=getNodeCount(root.lTreeNode,sum);int rightSum=getNodeCount(root.rTreeNode,sum);count=count+leftSum+rightSum;map.put(sum,map.getOrDefault(sum,0)-1);return count;}
