Skip to content

Instantly share code, notes, and snippets.

@KristopherGBaker
Last active August 29, 2015 14:06
Show Gist options
  • Save KristopherGBaker/f1528d54743d8c028c55 to your computer and use it in GitHub Desktop.
Save KristopherGBaker/f1528d54743d8c028c55 to your computer and use it in GitHub Desktop.
2014-09-03 Problem of the Day solution in Swift
// http://www.problemotd.com/problem/level-order-traversal/
class BinaryTree<T> {
init(value: T) {
self.value = value
}
var value: T
var left: BinaryTree<T>?
var right: BinaryTree<T>?
}
let fTree = BinaryTree<String>(value:"F")
let bTree = BinaryTree<String>(value: "B")
let gTree = BinaryTree<String>(value: "G")
let aTree = BinaryTree<String>(value: "A")
let dTree = BinaryTree<String>(value: "D")
let iTree = BinaryTree<String>(value: "I")
let cTree = BinaryTree<String>(value: "C")
let eTree = BinaryTree<String>(value: "E")
let hTree = BinaryTree<String>(value: "H")
fTree.left = bTree
fTree.right = gTree
bTree.left = aTree
bTree.right = dTree
gTree.right = iTree
dTree.left = cTree
dTree.right = eTree
iTree.left = hTree
var nodesVisited: [BinaryTree<String>] = []
var index = 0
nodesVisited.append(fTree)
while index < nodesVisited.count {
let currentNode = nodesVisited[index]
println(currentNode.value)
if let left = currentNode.left {
nodesVisited.append(left)
}
if let right = currentNode.right {
nodesVisited.append(right)
}
index++
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment