Advertisement
halaluddin

Day16-Apr-Convert_BST_to_Greater_Tree-Recursive(dfs)

Apr 16th, 2022 (edited)
1,814
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.05 KB | None | 0 0
  1. class Solution {
  2.    
  3.     /**
  4.         Problem Link: https://leetcode.com/problems/trim-a-binary-search-tree/
  5.         Language:
  6.             Swift
  7.         Complexity analysis:
  8.              Space: O(lenght of the recursive stack)
  9.              Time: O(n) - accroding to worst case.
  10.     */
  11.    
  12.     func convertBST(_ root: TreeNode?) -> TreeNode? {
  13.     /**
  14.         Args:
  15.             root: Custom(TreeNode) data(class) type;
  16.         Return:
  17.             Custom(TreeNode) data(class) type; return the greater tree root node.
  18.     */
  19.         var sum = 0
  20.         //innner method
  21.         func dfs(_ current_node: TreeNode?) -> TreeNode? {
  22.             guard let current_node = current_node else { return nil }
  23.            
  24.             // visite to right subtree
  25.             dfs(current_node.right)
  26.             sum += current_node.val
  27.             current_node.val = sum
  28.            
  29.             // visite to left subtree
  30.             dfs(current_node.left)
  31.            
  32.             return current_node
  33.         }
  34.        
  35.         return dfs(root)
  36.     }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement