Advertisement
Alexxik

Untitled

Sep 17th, 2023
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.87 KB | None | 0 0
  1. // MARK: - 124 Binary Tree Maximum Path Sum
  2.  
  3. func maxPathSum(_ root: TreeNode?) -> Int {
  4.     var res = root?.val
  5.    
  6.    
  7.     // Возвращаем максимальный путь без последующего разделения на ноды
  8.     func dfs(root: TreeNode?) -> Int {
  9.         if root == nil {return 0}
  10.        
  11.         var leftMax = dfs(root: root?.left)
  12.         var rightMax = dfs(root: root?.right)
  13.         // Чтобы не считать отрицательные
  14.         leftMax = max(leftMax, 0)
  15.         rightMax = max(rightMax, 0)
  16.        
  17.         res = max(res!, root!.val + leftMax + rightMax)
  18.         // Можем выбрать только один6 так как иначе мы разделяем, а это не тот случай
  19.         return root!.val + max(leftMax, rightMax)
  20.     }
  21.    
  22.     dfs(root: root)
  23.     return res!
  24. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement