Advertisement
Guest User

Untitled

a guest
Nov 26th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.02 KB | None | 0 0
  1. public class TreeNode {
  2.  
  3.     public var value: Int
  4.     public var leftNode: TreeNode? = nil
  5.     public var rightNode: TreeNode? = nil
  6.  
  7.     public init(value: Int) {
  8.         self.value = value
  9.     }
  10. }
  11.  
  12. public func secondHighestNode(head: TreeNode) -> TreeNode? {
  13.     var prev: TreeNode? = nil
  14.     var current = head
  15.    
  16.     while (true) {
  17.         if let right = current.rightNode {
  18.             prev = current
  19.             current = right
  20.         }
  21.         else if let left = current.leftNode {
  22.             prev = current
  23.             current = left
  24.         } else {
  25.             return prev
  26.         }
  27.     }
  28. }
  29.  
  30.  
  31. //EXAMPLE
  32.  
  33. let n8 = TreeNode(value: 8)
  34. let n3 = TreeNode(value: 3)
  35. let n10 = TreeNode(value: 10)
  36.  
  37. n8.leftNode = n3
  38. n8.rightNode = n10
  39.  
  40. let n14 = TreeNode(value: 14)
  41.  
  42. n10.rightNode = n14
  43.  
  44. let n12 = TreeNode(value: 12)
  45.  
  46. n14.leftNode = n12
  47.  
  48. let n11 = TreeNode(value: 11)
  49. let n13 = TreeNode(value: 13)
  50.  
  51. n12.leftNode = n11
  52. n12.rightNode = n13
  53.  
  54. print("\(secondHighestNode(head: n8)?.value)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement