Java Program for Tree Traversals

 

 

Java Program for Tree Traversals

This Java program implements in-order, pre-order, and post-order traversals of a binary tree. Each type of traversal is used to visit all the nodes in a specific order, crucial for various applications such as expression tree evaluations and syntax tree processing in compilers.

Binary Tree Class

The BinaryTree class defines the structure of a binary tree node and includes methods for each traversal technique.

public class BinaryTree {
    static class Node {
        int value;
        Node left, right;

        public Node(int value) {
            this.value = value;
            left = null;
            right = null;
        }
    }

    Node root;

    public BinaryTree() {
        root = null;
    }

    // Method for In-Order Traversal
    public void inOrder(Node node) {
        if (node == null)
            return;
        
        inOrder(node.left); // Traverse left subtree
        System.out.print(node.value + " "); // Visit node
        inOrder(node.right); // Traverse right subtree
    }

    // Method for Pre-Order Traversal
    public void preOrder(Node node) {
        if (node == null)
            return;

        System.out.print(node.value + " "); // Visit node
        preOrder(node.left); // Traverse left subtree
        preOrder(node.right); // Traverse right subtree
    }

    // Method for Post-Order Traversal
    public void postOrder(Node node) {
        if (node == null)
            return;

        postOrder(node.left); // Traverse left subtree
        postOrder(node.right); // Traverse right subtree
        System.out.print(node.value + " "); // Visit node
    }

    public static void main(String[] args) {
        BinaryTree tree = new BinaryTree();
        tree.root = new Node(1);
        tree.root.left = new Node(2);
        tree.root.right = new Node(3);
        tree.root.left.left = new Node(4);
        tree.root.left.right = new Node(5);

        System.out.println("In-order traversal:");
        tree.inOrder(tree.root);
        
        System.out.println("\nPre-order traversal:");
        tree.preOrder(tree.root);

        System.out.println("\nPost-order traversal:");
        tree.postOrder(tree.root);
    }
}

Explanation of the Traversal Methods

  • In-order traversal visits the nodes in a left-root-right sequence which is useful for binary search trees where such a traversal outputs the values in a sorted order.
  • Pre-order traversal visits the root node first followed by left and right subtrees. It’s used to create a copy of the tree or to serialize the tree structure.
  • Post-order traversal visits the root node last, after its subtrees. This order is useful for deleting or freeing spaces because it ensures that children nodes are processed before their respective parent nodes.

Conclusion

The above Java program effectively demonstrates how to implement and utilize different tree traversal techniques, each serving unique purposes in various applications of computer science.

 

Leave a Reply

Your email address will not be published. Required fields are marked *