사실 설명만 보고선 이해가 안됐는데요.
예제 문제 01번과 맨 아래의 부연 설명을 보고서야 어렴풋이 이해할 수 있었습니다.
문제 접근 방법
정확한지 아닌지는 솔직히 장담을 못한 채로 풀었습니다.
root를 트리에 비교해보면 0 = False, 1 = True, 2 = OR, 3 = AND를 의미한다는 것을 파악했습니다.
문제를 분석해보면 2는 OR를 뜻하므로 왼쪽 node와 오른쪽 node 둘 중 하나만 있어도 되고,
3일 때는 AND이므로 왼쪽 node와 오른쪽 node가 모두 있어야겠네요.
최종 코드
/**
* 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 {boolean}
*/
var evaluateTree = function(root) {
const traverse = (node) => {
if(node.val === 0) return false;
if(node.val === 1) return true;
const left = traverse(node.left);
const right = traverse(node.right);
if(node.val === 3) {
return left && right;
} else if(node.val === 2) {
return left || right;
}
}
return traverse(root);
};
'Algorithm' 카테고리의 다른 글
Leetcode 2843. Count Symmetric Integers (0) | 2024.06.04 |
---|---|
LEETCODE 1002. find-common-characters (0) | 2024.06.01 |
LEETCODE 824. Goat Latin (0) | 2024.05.17 |
LEETCODE 1624. Largest Substring Between Two Equal Characters (0) | 2024.05.09 |
LEETCODE 908. Smallest Range I (0) | 2024.05.06 |