Last active
March 22, 2018 18:07
-
-
Save Abhishek9634/e6d1cccb70e6065bcb2d9431a0fad877 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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