문제
이진트리가 주어지면 왼쪽 자식 노드들의 합을 구하시오.
예제 1:
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; };
문제풀이
- 재귀적으로 문제를 풀때는 종료조건 설정
ㄴ root가 null을 만나면 함수 종료- 왼쪽 합을 더 할 sum 변수 선언
- 왼쪽을 먼저 재귀적 탐색하면서 sum에 값을 더해주기
- 나머지 오른쪽을 탐색하면서 왼쪽에 값이 있을 경우만 sum에 값을 더해주기
이제는 트리도 자유자제로 다루는 모습이 너무 좋습니다! 저희도 알고리즘 문제를 꾸준히 풀면서 실력이 점점 상승하는 것 같네요 😆🌈 오늘도 수고하셨습니다!