404. Sum of Left Leaves

Leekimoon·2022년 6월 6일

문제

이진트리가 주어지면 왼쪽 자식 노드들의 합을 구하시오.

예제 1:
leetexamimg1

Input: root = [3,9,20,null,null,15,7]
Output: 24
Explanation: There are two left leaves in the binary tree, with values 9 and 15 respectively.

예제 2:

Input: root = [1]
Output: 0

정답코드

/**
 * 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
 * @return {number}
 */
var sumOfLeftLeaves = function(root) {
  if (root === null) return 0;

  let sum = 0; 

  if(root.left !== null){
    if(root.left.left === null && root.left.right === null){ // 왼쪽 노드 마지막 조건
      sum += root.left.val;
    } else{
      sum += sumOfLeftLeaves(root.left);
    }
  }

  if(root.right !== null){
    if(root.right.left !== null || root.right.right !== null){
      sum += sumOfLeftLeaves(root.right);
    }
  }

  return sum;
};

문제풀이

  1. 재귀적으로 문제를 풀때는 종료조건 설정
    ㄴ root가 null을 만나면 함수 종료
  2. 왼쪽 합을 더 할 sum 변수 선언
  3. 왼쪽을 먼저 재귀적 탐색하면서 sum에 값을 더해주기
  4. 나머지 오른쪽을 탐색하면서 왼쪽에 값이 있을 경우만 sum에 값을 더해주기
profile
FrontEnd Developer

2개의 댓글

comment-user-thumbnail
2022년 6월 6일

이제는 트리도 자유자제로 다루는 모습이 너무 좋습니다! 저희도 알고리즘 문제를 꾸준히 풀면서 실력이 점점 상승하는 것 같네요 😆🌈 오늘도 수고하셨습니다!

답글 달기
comment-user-thumbnail
2022년 6월 7일

역시 트리 탐색할때는 재귀가 유용한 것 같아요😎👍

답글 달기