이진 트리가 주어질 때 왼쪽 이파리 노드의 값들의 합을 리턴하는 문제이다!
Example 을 보면
1번 예시의 경우 9와 15가 왼쪽 이파리 노드이므로 24가 리턴되고
2번 예시의 경우 왼쪽 이파리 노드가 없으므로 0이 리턴된다
const sumOfLeftLeaves = function(root) {
let result = 0;
if(!root) return result
const helper = (node, isLeft=false) => {
if(!node) return;
if(!node.left && !node.right && isLeft) {
return result += node.val;
}
helper(node.left, true);
helper(node.right, false);
}
helper(root);
return result
};
재귀를 이용해서 풀어보았다. 먼저 부모노드가 없으면 이파리노드가 아니므로 result를 리턴하게 해주었다
그 다음 따로 helper 함수를 만들어서 parameter로 루트 노드와 왼쪽 이파리노드인지 아닌지를 판단해줄 isLeft라는 boolean 값을 주기로 하였다
만약 helper 함수로 주어진 root node가 null값이라면 그래도 함수를 종료시켜주고
node의 왼쪽 자식과 오른쪽 자식이 없고 isLeft값이 true라면 왼쪽 이파리 노드인것이므로 value 값을 result에 더해주었다
그 다음 node가 왼쪽 자식이나 오른쪽 자식이 있는경우 재귀를 이용하여 node.left일때는 isLeft 값을 true, node.right일때는 isLeft를 false를 주어서 재귀를 돌렸다
submit을 해보니
정답이었다!