Traversing through all nodes of a binary tree in Java
binary-tree, java, traversal, tree-traversal
Solution
There are 3 types of Binary tree traversal that you can achieve :
example:
consider this following Binary tree :
Pre-order traversal sequence: F, B, A, D, C, E, G, I, H (root, left, right)
In-order traversal sequence: A, B, C, D, E, F, G, H ,I (left, root, right)
Post-order traversal sequence: A, C, E, D, B, H, I, G, F (left, right, root)
code example:
left to right traversal of the Binary tree, nay In order Traversal of binary tree :
public void traverse (Node root){ // Each child of a tree is a root of its subtree.
if (root.left != null){
traverse (root.left);
}
System.out.println(root.data);
if (root.right != null){
traverse (root.right);
}
}
Problem
Let's say I have a simple binary tree node class, like so: ``` public class BinaryTreeNode { public String identifier = ""; public BinaryTreeNode parent = null; public BinaryTreeNode left = null; public BinaryTreeNode right = null; public BinaryTreeNode(BinaryTreeNode parent, String identifier) { this.parent = parent; //passing null makes this the root node this.identifier = identifier; } public boolean IsRoot() { return parent == null; } } ``` How would I add a method which is able to recursively traverse through any size tree, visiting each and every existing node from left to right, without revisiting a node that has already been traversed? Would this work?: ``` public void traverseFrom(BinaryTreeNode rootNode) { /* insert code dealing with this node here */ if(rootNode.left != null) rootNode.left.traverseFrom(rootNode.left); if(rootNode.right != null) rootNode.traverseFrom(rootNode.right); } ```