UniLecs #Task. Range Sum in BST

Albert Davletov
UniLecs
Published in
1 min readNov 29, 2020

Задача: Дан корневой элемент двоичного дерева поиска. Необходимо вернуть сумму значений всех узлов со значением в заданном диапазоне [min, max].

Пример:

[min, max] = [7, 15]

Output: 32

Разбор

Используем классический поиск в глубину и свойства двоичного дерева поиска. То есть если значение узла больше заданного диапазона, то понятно, что только левая часть может иметь узлы со значением внутри этого диапазона. И наоборот, если значение узла меньше заданного диапазона, то проверяем только правую часть дерева. Если значение текущего узла лежит в диапазоне, то добавляем его в результат.
Используем рекурсивный подход для решения задачи, детали смотрите в коде.

Реализация

C#

https://gist.github.com/unilecs/0c7e63c3788415c62ece4138745f25ca

Play-test

https://dotnetfiddle.net/ERGw7Y

--

--