Java Program to Implement Binomial Tree

This is a Java Program to implement Binomial Tree.

Here is the source code of the Java program to implement Binomial Tree. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

/**
 *  Java Program to Implement Binomial Tree
 **/    
 
import java.util.*;        
 
/** Class BinoNode **/
class BinoNode    
{
    int data;
    int numNodes;
    BinoNode arr[];
    /** Constructor **/
    public BinoNode(int k)
    {
        data = -1;
        numNodes = k;
        arr = new BinoNode[numNodes];    
    }
}
 
/** Class BinomialTree **/
class BinomialTree
{
    private BinoNode root;
    private int order, size;
 
    /** Constructor **/
    public BinomialTree(int k)
    {
        size = 0;
        order = k;        
        root = new BinoNode(order);
        createTree(root);
    }
    /** Function to create a tree **/
    private void createTree(BinoNode r)
    {
        int n = r.numNodes;        
        if (n == 0)
            return;            
        for (int i = 0; i < n; i++)
        {
            r.arr[i] = new BinoNode(i);
            createTree(r.arr[i]);
        }  
    }
    /** Function to clear tree **/
    public void clear()
    {
        size = 0;
        root = new BinoNode(order);
        createTree(root);
    }
    /** Function to check if tree is empty **/
    public boolean isEmpty()
    {
        return size == 0;
    }
    /** Function to get size of tree **/
    public int getSize()
    {
        return size;
    }
    /** Function to insert a value **/
    public void insert(int val)
    {
        try
        {
            insert(root, val);
        }
        catch (Exception e)
        {
        }
    }
    /** Function to insert a value **/
    private void insert(BinoNode r, int val) throws Exception
    {
        if (r.data == -1)
        {
            r.data = val;
            size++;
            throw new Exception("inserted !");
        }
        int n = r.numNodes;        
        for (int i = 0; i < n; i++)
            insert(r.arr[i], val);
    }
    /** Function to print tree **/
    public void printTree()
    {
        System.out.print("\nBinomial Tree = ");
        printTree(root);
        System.out.println();
    }
    /** Function to print tree **/
    private void printTree(BinoNode r)
    {
        if (r.data != -1)
            System.out.print(r.data +" ");        
        int n = r.numNodes;
        if (n == 0)
            return;
        for (int i = 0; i < n; i++)
            printTree(r.arr[i]);
    }
}
 
public class BinomialTreeTest
{
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        System.out.println("Binomial Tree Test\n");
        System.out.println("\nEnter order of binomial tree");
        /** Creating object of Binomial tree **/
        BinomialTree bt = new BinomialTree(scan.nextInt());           
        char ch;
        /**  Perform tree operations  **/
        do    
        {
            System.out.println("\nBinomial Tree Operations\n");
            System.out.println("1. insert ");
            System.out.println("2. size");
            System.out.println("3. check empty"); 
            System.out.println("4. clear");
 
            int choice = scan.nextInt();            
            switch (choice)
            {
            case 1 : 
                System.out.println("Enter integer element to insert");
                bt.insert( scan.nextInt() );                     
                break;                          
            case 2 : 
                System.out.println("Nodes = "+ bt.getSize());
                break;     
            case 3 :  
                System.out.println("Empty status = "+ bt.isEmpty());
                break;   
            case 4 :  
                bt.clear();
                System.out.println("\nTree Cleared\n");
                break;            
            default : 
                System.out.println("Wrong Entry \n ");
                break;   
            }
            /**  Display tree  **/ 
            bt.printTree();
 
            System.out.println("\nDo you want to continue (Type y or n) \n");
            ch = scan.next().charAt(0);                        
        } while (ch == 'Y'|| ch == 'y');               
    }
}
Binomial Tree Test
 
 
Enter order of binomial tree
3
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
24
 
Binomial Tree = 24
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
6
 
Binomial Tree = 24 6
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
19
 
Binomial Tree = 24 6 19
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
94
 
Binomial Tree = 24 6 19 94
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
28
 
Binomial Tree = 24 6 19 94 28
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
5
 
Binomial Tree = 24 6 19 94 28 5
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
16
 
Binomial Tree = 24 6 19 94 28 5 16
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
63
 
Binomial Tree = 24 6 19 94 28 5 16 63
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
1
Enter integer element to insert
17
 
Binomial Tree = 24 6 19 94 28 5 16 63
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
2
Nodes = 8
 
Binomial Tree = 24 6 19 94 28 5 16 63
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
3
Empty status = false
 
Binomial Tree = 24 6 19 94 28 5 16 63
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
4
 
Tree Cleared
 
 
Binomial Tree =
 
Do you want to continue (Type y or n)
 
y
 
Binomial Tree Operations
 
1. insert
2. size
3. check empty
4. clear
3
Empty status = true
 
Binomial Tree =
 
Do you want to continue (Type y or n)
 
n

Related posts:

Java Program to Implement Sorted Vector
Guide to CountDownLatch in Java
Intro to Spring Boot Starters
Giới thiệu Google Guice – Injection, Scope
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
Java Program to Find the Vertex Connectivity of a Graph
Java Program to Check Cycle in a Graph using Graph traversal
Spring WebClient and OAuth2 Support
Java Program to Find Maximum Element in an Array using Binary Search
An Intro to Spring Cloud Security
Composition, Aggregation, and Association in Java
The Registration API becomes RESTful
Count Occurrences of a Char in a String
Spring Boot - Flyway Database
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Generating Random Numbers in a Range in Java
Optional trong Java 8
TreeSet và sử dụng Comparable, Comparator trong java
Java Program to Implement Shell Sort
Java Convenience Factory Methods for Collections
Convert XML to JSON Using Jackson
Spring Cloud Series – The Gateway Pattern
Java Program to Describe the Representation of Graph using Adjacency Matrix
Java Program to Represent Graph Using Linked List
4 tính chất của lập trình hướng đối tượng trong Java
Java Program to Implement Min Hash
Chuyển đổi giữa các kiểu dữ liệu trong Java
Java – Rename or Move a File
Java Program to Implement Fermat Primality Test Algorithm
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Spring Boot - File Handling
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters