> For the complete documentation index, see [llms.txt](https://nataliekung.gitbook.io/ladder_code/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nataliekung.gitbook.io/ladder_code/meta-2025/938.-range-sum-of-bst.md).

# 938. Range Sum of BST

DFS TREE

Given the `root` node of a binary search tree and two integers `low` and `high`, return *the sum of values of all nodes with a value in the **inclusive** range* `[low, high]`.

&#x20;

**Example 1:**

![](https://assets.leetcode.com/uploads/2020/11/05/bst1.jpg)

<pre><code><strong>Input: root = [10,5,15,3,7,null,18], low = 7, high = 15
</strong><strong>Output: 32
</strong><strong>Explanation: Nodes 7, 10, and 15 are in the range [7, 15]. 7 + 10 + 15 = 32.
</strong></code></pre>

**Example 2:**

![](https://assets.leetcode.com/uploads/2020/11/05/bst2.jpg)

<pre><code><strong>Input: root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
</strong><strong>Output: 23
</strong><strong>Explanation: Nodes 6, 7, and 10 are in the range [6, 10]. 6 + 7 + 10 = 23.
</strong></code></pre>

&#x20;

**Constraints:**

* The number of nodes in the tree is in the range `[1, 2 * 10`<sup>`4`</sup>`]`.
* `1 <= Node.val <= 10`<sup>`5`</sup>
* `1 <= low <= high <= 10`<sup>`5`</sup>
* All `Node.val` are **unique**.

分析

判断根在不在范围内，在的话返回root+left+right, 否则按照范围返回左或者右

```
# Definition for a binary tree node.
# 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(root):
            if not root:
                return 0
            if low<=root.val <= high:
                return root.val + dfs(root.left) + dfs(root.right)
            elif root.val<low:
                return dfs(root.right)
            else:
                return dfs(root.left)
        return dfs(root)


```
