Check for Symmetric Binary Tree (Iterative Approach) in Java

In this tutorial, will see how we can check for a Symmetric Binary Tree in Java. A Symmetric Binary Tree is a tree in which a tree is a mirror of itself. We will be doing this code without recursion.

For Example: –

   /   \
  5     5
 / \   / \
2   1 1   2

This is an example of a symmetric binary tree.

In this, we will be using a queue. So, in this we see each level behaves like a palindrome. As we can see, the left child of our left subtree is equal to the right child of the right subtree and vice-versa. So we will be inserting these into the queue and check whether they are equal or not.

Code: –

import java.util.* ; 
public class Main 
    Node r; 
    static class Node 
        int data; 
        Node left;
        Node right; 
        Node(int data) 
   = data; 
            left = null; 
            right = null; 
    Main(Node r){
        this.r = r; 
    public boolean symmetric(Node root) 
        //Add null elements to the queue
        Queue<Node> queue = new LinkedList<Node>(); 
        //Add left right nodes
        while (!queue.isEmpty()) 
            // Remove and check last 2 nodes
            Node tleft = queue.remove(); 
            Node tright = queue.remove(); 
            // both null check more
            if (tleft==null && tright==null) {
            // If any of the one is null then false
            if ((tleft==null && tright!=null) || (tleft!=null && tright==null)) {
                return false;
            // If both not equal false
            if ( != {
                return false;
            queue.add(tleft.left); // First we add left child left subtree
            queue.add(tright.right); // Than we add right child right subtree
            queue.add(tleft.right); // Than right child left subtree
            queue.add(tright.left); // At last left child right subtree
        return true; 
    public static void main(String[] args) 
        Node node = new Node(9); 
        Main tree = new Main(node); 
        tree.r.left = new Node(5); 
        tree.r.right = new Node(5); 
        tree.r.left.left = new Node(2); 
        tree.r.left.right = new Node(1); 
        tree.r.right.left = new Node(1); 
        tree.r.right.right = new Node(2); 
        if (tree.symmetric(tree.r)) {
            System.out.println("Not Symmetric");

Output: –


This is how we check for a symmetric binary tree with Java.

Also Read: –

Leave a Reply

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