[LeetCode] 113. Path Sum II
Posted aaronliu1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 113. Path Sum II相关的知识,希望对你有一定的参考价值。
二叉树的路径和二。题意跟版本一很接近,唯一的不同是版本一只是问是否有满足条件的路径;版本二是输出所有满足条件的路径和。例子,
Example:
Given the below binary tree and
sum = 22
,5 / 4 8 / / 11 13 4 / / 7 2 5 1Return:
[ [5,4,11,2], [5,8,4,5] ]
这题我只会用DFS做。代码如下,
时间O(n)
空间O(n)
注意21行为什么要将最后一个节点弹出。我举个例子,比如5,4,11,7都加入list之后,发现5+4+11+7 != 22,此刻一定要将7删除,才能接着去看右子树(2),否则在做右子树递归的时候,最后的加法是5+4+11+7+2。
1 /** 2 * @param {TreeNode} root 3 * @param {number} sum 4 * @return {number[][]} 5 */ 6 var pathSum = function(root, sum) { 7 let res = []; 8 if (root === null) return res; 9 helper(res, [], root, sum); 10 return res; 11 }; 12 13 var helper = function(res, list, root, sum) { 14 if (root) { 15 list.push(root.val); 16 if (!root.left && !root.right && sum - root.val === 0) { 17 res.push([...list]); 18 } 19 helper(res, list, root.left, sum - root.val); 20 helper(res, list, root.right, sum - root.val); 21 list.pop(); 22 } 23 return res; 24 };
以上是关于[LeetCode] 113. Path Sum II的主要内容,如果未能解决你的问题,请参考以下文章