Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class TreeNode {
- public var value: Int
- public var leftNode: TreeNode? = nil
- public var rightNode: TreeNode? = nil
- public init(value: Int) {
- self.value = value
- }
- }
- public func secondHighestNode(head: TreeNode) -> TreeNode? {
- var prev: TreeNode? = nil
- var current = head
- while (true) {
- if let right = current.rightNode {
- prev = current
- current = right
- }
- else if let left = current.leftNode {
- prev = current
- current = left
- } else {
- return prev
- }
- }
- }
- //EXAMPLE
- let n8 = TreeNode(value: 8)
- let n3 = TreeNode(value: 3)
- let n10 = TreeNode(value: 10)
- n8.leftNode = n3
- n8.rightNode = n10
- let n14 = TreeNode(value: 14)
- n10.rightNode = n14
- let n12 = TreeNode(value: 12)
- n14.leftNode = n12
- let n11 = TreeNode(value: 11)
- let n13 = TreeNode(value: 13)
- n12.leftNode = n11
- n12.rightNode = n13
- print("\(secondHighestNode(head: n8)?.value)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement