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); } ```

Original source