Advertisement
Alexxik

Untitled

Mar 19th, 2024
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.97 KB | None | 0 0
  1. // MARK: - Сумма элементов в дереве ПОИСКА, лежащих между lowBorder и highBorder
  2. // рекурсивно ищем и складываем ноды которые входят в range
  3.  
  4. func rangeSumBST(_ root: TreeNode?, _ low: Int, _ high: Int) -> Int {
  5.     if root == nil {
  6.         return 0
  7.     }
  8.    
  9.     // может быть больше промежутка, значит нам надо ВЛЕВО
  10.     if root!.val > high {
  11.         return rangeSumBST(root?.left, low, high)
  12.     }
  13.     // может быть меньше, значит нам надо ВПРАВО
  14.     if root!.val < low {
  15.         return rangeSumBST(root?.right, low, high)
  16.     }
  17.     // иначе значение между low и high, прибавляя root!.val - так как он входит в промежуток
  18.     return    root!.val
  19.                 + rangeSumBST(root?.right, low, high)
  20.                 + rangeSumBST(root?.left, low, high)
  21.    
  22. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement