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:

Get the workstation name or IP
Java Program to Check whether Graph is a Bipartite using BFS
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Java Program to Implement Randomized Binary Search Tree
Converting a Stack Trace to a String in Java
Lớp Collections trong Java (Collections Utility Class)
Logging in Spring Boot
Spring Boot - Tomcat Port Number
Java – InputStream to Reader
OAuth2 for a Spring REST API – Handle the Refresh Token in AngularJS
Java Program to Implement Tarjan Algorithm
Dynamic Proxies in Java
Guide to java.util.concurrent.Future
Inheritance with Jackson
Java Program to Perform Searching Using Self-Organizing Lists
Auditing with JPA, Hibernate, and Spring Data JPA
Java Program to Implement ConcurrentSkipListMap API
Spring Boot - Introduction
Giới thiệu Google Guice – Dependency injection (DI) framework
Using the Map.Entry Java Class
Spring Boot Actuator
Java Program to Describe the Representation of Graph using Incidence List
Java Program to Implement Maximum Length Chain of Pairs
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Spring Boot - Admin Client
Java Program to Implement RoleList API
Retrieve User Information in Spring Security
Sao chép các phần tử của một mảng sang mảng khác như thế nào?
Java 8 and Infinite Streams
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
Registration with Spring Security – Password Encoding
Java Program to Implement Fermat Primality Test Algorithm