Path Sum II
MediumBacktrackingTreeDepth-First SearchBinary Tree
Solution
import { TreeNode } from '@algorithm/lib';
export function pathSum(root: TreeNode | null, targetSum: number): number[][] {
if (root === null) {
return [];
}
const answer: number[][] = [];
const currentValues = [root.val];
function dfs(node: TreeNode | null, totalValue: number) {
if (node === null) {
return;
}
if (node.left === null && node.right === null) {
if (totalValue === targetSum) {
answer.push([...currentValues]);
}
return;
}
if (node.left) {
const leftValue = node.left.val;
currentValues.push(leftValue);
dfs(node.left, totalValue + leftValue);
currentValues.pop();
}
if (node.right) {
const rightValue = node.right.val;
currentValues.push(rightValue);
dfs(node.right, totalValue + rightValue);
currentValues.pop();
}
return;
}
dfs(root, root.val);
return answer;
}