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)
};