Advertisement
Alexxik

Untitled

Sep 17th, 2023 (edited)
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.04 KB | None | 0 0
  1. // MARK: - 98 Validate Binary Search Tree
  2.  
  3. // Бинарное дерево - это такое дерево, у которого
  4. // 1) Правый ребенок и ВСЕ его элементы больше родителя
  5. // 2) Левый ребенок и все его дети меньше родителя
  6.  
  7. // Вот мы так идем и проверяем границы для каждого узла: для самого родителя (-беск < node < +беск)
  8. // Идем ниже и изменяем интервал в зависимости от того какой ребенок
  9.  
  10. // left и right это значения с которыми сравниваем значение узла
  11.  
  12. func isValidBST(_ root: TreeNode?) -> Bool {
  13.    
  14.     // Это будет рекурсивная функция, поэтому пропишем базовый случай
  15.     func valid(node: TreeNode?, left: Int, right: Int) -> Bool {
  16.  
  17.         // если дошли до конца и раньше не вышли значит все ок
  18.         if node == nil {
  19.             return true
  20.         }
  21.        
  22.         if !(node!.val < right && node!.val > left) {
  23.             return false
  24.         }
  25.        
  26.         // Делаем рекурсивный вызов - для левого и правого ребенка - если хотя бы одна вернула false - возвращаем false
  27.         return valid(node: node!.left, left: left, right: node!.val) && valid(node: node!.right, left: node!.val, right: right)
  28.     }
  29.     return valid(node: root, left: -Int.max, right: Int.max)
  30. }
  31.  
  32.  
  33.  
  34.  
  35.  
  36. public class TreeNode {
  37.     public var val: Int
  38.     public var left: TreeNode?
  39.     public var right: TreeNode?
  40.     public init() { self.val = 0; self.left = nil; self.right = nil; }
  41.     public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
  42.     public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
  43.         self.val = val
  44.         self.left = left
  45.         self.right = right
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement