leetCode 문제풀이 938번 Range Sum of BST (JS)

devmomo·2021년 3월 13일
0

알고리즘

목록 보기
26/52
post-thumbnail

938. Range Sum of BST

문제
root라는 binary search tree가 배열로 주어지고, root, low, high를 매개변수로 받을 때, root에서 low보다 크거나 같고, high보다 작거나 같은 값을 더한 최종값을 return하는 함수 만들기


가정
1. node의 개수는 1 이상 2*10^4 이하
2. Node 값은 1 이상 100,000이하
3. low,high는 1이상 100,000이하
4. 모든 노드 값은 유일

풀이

/**
 * 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)
 * }
 */
var rangeSumBST = function(root, L, R) {
    let sum = 0;
    const dfs = (root, L, R) => {
        if(!root) {
            return;
        }
        if(root.val <= R && L <= root.val) {
            sum += root.val;
        }
        if(L < root.val) {
           dfs(root.left, L, R);
        }
        if(root.val < R) {
           dfs(root.right, L, R);
        }
    };
    dfs(root, L, R);
    return sum;
};

다른풀이

var rangeSumBST = function(root, L, R) {
    let d = r => !r ? 0 : (L <= r.val && r.val <= R ? r.val : 0) + d(r.left) + d(r.right)
    return d(root)
};
profile
FE engineer

0개의 댓글