halaluddin

Day18-Apr-Kth Smallest_in_a_BST

Apr 18th, 2022 (edited)
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 0.95 KB | None | 0 0
  1. class Solution {
  2.     /// Languages:
  3.     /// - Swift
  4.     /// Complexity:
  5.     /// - Time: (n)
  6.     /// - Space: (Recursive stack length)
  7.    
  8.     func kthSmallest(_ root: TreeNode?, _ k: Int) -> Int {
  9.         /// find the kth smallest value.
  10.         /// - parameters:
  11.         ///   - root: TreeNode
  12.         /// - returns: the kth smallest value
  13.        
  14.         guard let root = root else { return -1 }
  15.        
  16.         var k = k
  17.         var ans: Int?
  18.        
  19.         // inner function
  20.         func inorderTraversal(_ root: TreeNode) {
  21.             if let left = root.left {
  22.                 inorderTraversal(left)
  23.             }
  24.            
  25.             k -= 1
  26.             if k == 0 {
  27.                 ans = root.val
  28.                 return
  29.             }
  30.            
  31.             if let right = root.right {
  32.                 inorderTraversal(right)
  33.             }
  34.         }
  35.        
  36.         inorderTraversal(root)
  37.        
  38.         return ans ?? 0
  39.     }
  40. }
Add Comment
Please, Sign In to add comment