Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MARK: - Сумма элементов в дереве ПОИСКА, лежащих между lowBorder и highBorder
- // рекурсивно ищем и складываем ноды которые входят в range
- func rangeSumBST(_ root: TreeNode?, _ low: Int, _ high: Int) -> Int {
- if root == nil {
- return 0
- }
- // может быть больше промежутка, значит нам надо ВЛЕВО
- if root!.val > high {
- return rangeSumBST(root?.left, low, high)
- }
- // может быть меньше, значит нам надо ВПРАВО
- if root!.val < low {
- return rangeSumBST(root?.right, low, high)
- }
- // иначе значение между low и high, прибавляя root!.val - так как он входит в промежуток
- return root!.val
- + rangeSumBST(root?.right, low, high)
- + rangeSumBST(root?.left, low, high)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement