Java Program to Print only Odd Numbered Levels of a Tree

This is a Java Program to implement a Binary Tree and print the level order traversal of the same, such that only odd levels are considered. At current level check nodes in next to next level and put them in Queue, dequeue them one by one and print them.

Here is the source code of the Java Program to Print only Odd Numbered Levels of a Tree. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

//This is a java program to print only odd levels of the given tree
import java.util.Queue;
import java.util.LinkedList;
 
public class BinaryTreePrintOddLevels
{
    private static class Node<T>
    {
        public Node<T> left;
        public Node<T> right;
        public T       data;
 
        public Node(T data)
        {
            this.data = data;
        }
 
        public Node<T> getLeft()
        {
            return this.left;
        }
 
        public void setLeft(Node<T> left)
        {
            this.left = left;
        }
 
        public Node<T> getRight()
        {
            return this.right;
        }
 
        public void setRight(Node<T> right)
        {
            this.right = right;
        }
    }
 
    public static void preorder(Node<?> n)
    {
        if (n != null)
        {
            System.out.print(n.data + " ");
            preorder(n.getLeft());
            preorder(n.getRight());
        }
    }
 
    public static void inorder(Node<?> n)
    {
        if (n != null)
        {
            inorder(n.getLeft());
            System.out.print(n.data + " ");
            inorder(n.getRight());
        }
    }
 
    public static void postorder(Node<?> n)
    {
        if (n != null)
        {
            postorder(n.getLeft());
            postorder(n.getRight());
            System.out.print(n.data + " ");
        }
    }
 
    public static void levelorder(Node<?> n)
    {
        Queue<Node<?>> nodequeue = new LinkedList<Node<?>>();
        if (n != null)
            nodequeue.add(n);
        while (!nodequeue.isEmpty())
        {
            Node<?> next = nodequeue.remove();
            System.out.print(next.data + " ");
            if (next.getLeft() != null)
            {
                if (next.getLeft().getLeft() != null)
                    nodequeue.add(next.getLeft().getLeft());
                if (next.getLeft().getRight() != null)
                    nodequeue.add(next.getLeft().getRight());
            }
            if (next.getRight() != null)
            {
                if (next.getRight().getLeft() != null)
                    nodequeue.add(next.getRight().getLeft());
                if (next.getRight().getRight() != null)
                    nodequeue.add(next.getRight().getRight());
            }
        }
    }
 
    public static void main(final String[] args)
    {
        Node<Integer> one = new Node<Integer>(1);
        Node<Integer> two = new Node<Integer>(2);
        Node<Integer> three = new Node<Integer>(3);
        Node<Integer> four = new Node<Integer>(4);
        Node<Integer> five = new Node<Integer>(5);
        Node<Integer> six = new Node<Integer>(6);
        Node<Integer> seven = new Node<Integer>(7);
        Node<Integer> eight = new Node<Integer>(8);
        Node<Integer> nine = new Node<Integer>(9);
 
        one.setLeft(two);
        one.setRight(three);
        two.setLeft(four);
        two.setRight(five);
        three.setLeft(six);
        four.setLeft(seven);
        six.setLeft(eight);
        six.setRight(nine);
 
        System.out.println("\nPre-Order of the Tree");
        preorder(one);
        System.out.println("\nIn-Order of the Tree");
        inorder(one);
        System.out.println("\nPost-Order of the Tree");
        postorder(one);
        System.out.println("\nLevel-Order Odd Levels of the Tree");
        levelorder(one);
 
    }
}

Output:

$ javac BinaryTreePrintOddLevels.java
$ java BinaryTreePrintOddLevels
 
Pre-Order of the Tree
1 2 4 7 5 3 6 8 9 
In-Order of the Tree
7 4 2 5 1 8 6 9 3 
Post-Order of the Tree
7 4 5 2 8 9 6 3 1 
Level-Order Odd Levels of the Tree
1 4 5 6

Related posts:

How to Manually Authenticate User with Spring Security
Java Program to Implement Expression Tree
XML-Based Injection in Spring
A Guide to Java HashMap
Java Program to Compute the Volume of a Tetrahedron Using Determinants
Spring Boot - Cloud Configuration Server
Lớp TreeMap trong Java
Java Program to Create a Random Graph Using Random Edge Generation
Java Program to Find a Good Feedback Edge Set in a Graph
Java Program to Implement TreeMap API
Java Program to Perform Sorting Using B-Tree
Converting String to Stream of chars
Java Program for Douglas-Peucker Algorithm Implementation
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Perform the Unique Factorization of a Given Number
A Guide to Java HashMap
Java Program to Implement Gift Wrapping Algorithm in Two Dimensions
Spring Cloud – Securing Services
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Java Program to Implement Bloom Filter
Assert an Exception is Thrown in JUnit 4 and 5
Introduction to Spring Cloud Netflix – Eureka
Intro to Spring Boot Starters
Java Program to Find Number of Articulation points in a Graph
Java Program to Implement Gaussian Elimination Algorithm
Java Program to Compute the Area of a Triangle Using Determinants
Database Migrations with Flyway
Lấy ngày giờ hiện tại trong Java
Java Program to Implement Brent Cycle Algorithm
Queue và PriorityQueue trong Java
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Một số tính năng mới về xử lý ngoại lệ trong Java 7