来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-iii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。
解答
每个节点可以从其父节点开始,也可以从当前节点开始
所以每个节点自己开始都要试一下
/*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val = (val===undefined ? 0 : val)* this.left = (left===undefined ? null : left)* this.right = (right===undefined ? null : right)* }*//*** @param {TreeNode} root* @param {number} targetSum* @return {number}*/var pathSum = function(root, targetSum) {let paths = 0, nodes = [];function preorder (node, sum, isCollect) {if (!node) return 0;if (isCollect) {nodes.push(node);} else {if ((sum + node.val) === targetSum) {++paths;}sum += node.val;}preorder(node.left, sum, isCollect);preorder(node.right, sum, isCollect);}preorder(root, 0, true);for (let node of nodes) {preorder(node, 0, false);}return paths;};
