Skip to content

Instantly share code, notes, and snippets.

@Abhishek9634
Last active March 22, 2018 18:07
Show Gist options
  • Save Abhishek9634/e6d1cccb70e6065bcb2d9431a0fad877 to your computer and use it in GitHub Desktop.
Save Abhishek9634/e6d1cccb70e6065bcb2d9431a0fad877 to your computer and use it in GitHub Desktop.
extension BinaryTree {
func traverse() {
print("\nPRE-ORDER TRAVERSE")
self.preorder(self.rootNode)
print("\n\nIN-ORDER TRAVERSE")
self.inorder(self.rootNode)
print("\n\nPOST-ORDER TRAVERSE")
self.postorder(self.rootNode)
print("\n")
}
// NOTE : LEFT IS ALWAYS LEFT OF RIGHT
// NLR : NODE(i.e. Root/Parent Node) LEFT RIGHT
// LNR : LEFT NODE RIGHT
private func inorder(_ node: TreeNode<T>?) {
guard let _ = node else { return }
self.inorder(node?.leftNode)
print("\(node!.data)", terminator: " ")
self.inorder(node?.rightNode)
}
// NLR : NODE LEFT RIGHT
private func preorder(_ node: TreeNode<T>?) {
guard let _ = node else { return }
print("\(node!.data)", terminator: " ")
self.preorder(node?.leftNode)
self.preorder(node?.rightNode)
}
// LRN : LEFT RIGHT NODE
private func postorder(_ node: TreeNode<T>?) {
guard let _ = node else { return }
self.postorder(node?.leftNode)
self.postorder(node?.rightNode)
print("\(node!.data)", terminator: " ")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment