Skip to content

Instantly share code, notes, and snippets.

@audrl1010
Created June 5, 2018 10:42
Show Gist options
  • Save audrl1010/0c05c3d7ba298e4c780d8a8e38df39d2 to your computer and use it in GitHub Desktop.
Save audrl1010/0c05c3d7ba298e4c780d8a8e38df39d2 to your computer and use it in GitHub Desktop.
BinaryTree
public class BinaryNode<Element> {
  public var value: Element
  public var leftChild: BinaryNode?
  public var rightChild: BinaryNode?
  
  public init(value: Element) {
    self.value = value
  }
}
extension BinaryNode {
  public func traverseInOrder(visit: (Element) -> Void) {
    leftChild?.traverseInOrder(visit: visit)
    visit(value)
    rightChild?.traverseInOrder(visit: visit)
  }
}

extension BinaryNode {
  public func traversePreOrder(visit: (Element) -> Void) {
    visit(value)
    leftChild?.traversePreOrder(visit: visit)
    rightChild?.traversePreOrder(visit: visit)
  }
}

extension BinaryNode {
  public func traversePostOrder(visit: (Element) -> Void) {
    leftChild?.traversePreOrder(visit: visit)
    rightChild?.traversePreOrder(visit: visit)
    visit(value)
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment