drop-of-water

문제 링크

조건

  • 트리가 가지고 있는 노드의 갯수 [0, 5000]. -1000 <= Node.val <= 1000 -1000 <= targetSum <= 1000

입력값

  • root = Binary Tree의 루트
  • targetSum = 각 노드의 값을 합쳤을때 나와야 하는 값

출력값

  • 2차원 배열 = root 에서 leaf 노드 까지의 path

풀이과정

  • tree를 preorder로 traverse하면서 현재 노드의 값을 배열에 넣고 sum 에 현재 노드의 값을 더한다
  • sum이 targetSum과 같고 leaf 노드인 경우 result에 결과 넣기

코드

var pathSum = function (root, targetSum) {
  let result = [];
  let a = [];

  traverse(root, a, 0);
  function traverse(r, arr, sum) {
    if (!r) {
      return;
    }

    sum += r.val;
    arr.push(r.val);

    if (sum === targetSum && r.left === null && r.right === null) {
      result.push(arr);
      return;
    }
    traverse(r.left, [...arr], sum);
    traverse(r.right, [...arr], sum);
  }

  return result;
};

😊