Search code examples
javabinary-treetraversaltree-traversal

Traversing through all nodes of a binary tree in Java


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

Solution

  • There are 3 types of Binary tree traversal that you can achieve :

    example:

    consider this following Binary tree :

    enter image description here

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