Files
obsidian/АиСД/Задачи/LeetCode/Range Sum of BST.md
T
roma-dxunvrs f57762fd3b Init
2026-09-03 21:40:46 +03:00

922 B

Leetcode #938 | #Easy | Деревья | BST | DFS

Идея

DFS. Но с оговоркой. Если текущая нода меньше low, то возвращаем только сумму правого поддерева, аналогично если больше high, то только сумма левого поддерева. Иначе возвращаем обе суммы + node.val

Big-O

  • Время O(N)
  • Память O(H) N - всего узлов, H - высота дерева

Код

class Solution {
    public int rangeSumBST(TreeNode root, int low, int high) {
        if (root == null) return 0;
        if (root.val < low) return rangeSumBST(root.right, low, high);
        if (root.val > high) return rangeSumBST(root.left, low, high);
        return root.val + rangeSumBST(root.left, low, high) + rangeSumBST(root.right, low, high);
    }
}