Solution
# Definition for a binary tree node.
from typing import Optional
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def rangeSumBST(self, root: Optional[TreeNode], low: int, high: int) -> int:
def dfs(node: TreeNode):
if not node:
return 0
# ํ์ฌ ๋
ธ๋๊ฐ low๋ณด๋ค ์์ ๊ฒฝ์ฐ, ๋ ์ด์ ์ผ์ชฝ ๊ฐ์ง๋ ํ์ํ ํ์๊ฐ ์์
# ์ฆ, ์ค๋ฅธ์ชฝ๋ง ํ์ํ๋๋ก ์ฌ๊ท ํธ์ถ
if node.val < low:
return dfs(node.right)
# ์ด๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง
elif node.val > high:
return dfs(node.left)
return node.val + dfs(node.left) + dfs(node.right)
return dfs(root)
Leave a comment