This is a Java Program to implement Fibonacci Heap. Fibonacci heap is a heap data structure consisting of a collection of trees. It has a better amortized running time than a binomial heap. The name of Fibonacci heap comes from Fibonacci numbers which are used in the running time analysis. Using Fibonacci heaps for priority queues improves the asymptotic running time of important algorithms, such as Dijkstra’s algorithm for computing the shortest path between two nodes in a graph.
Here is the source code of the Java program to implement Fibonacci Heap. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/** * Java Program to Implement FibonacciHeap **/ import java.util.*; /* Fibonacci Heap Node **/ class FibonacciHeapNode { FibonacciHeapNode child, left, right, parent; int element; /** Constructor **/ public FibonacciHeapNode(int element) { this.right = this; this.left = this; this.element = element; } } /** Class FibonacciHeap **/ class FibonacciHeap { private FibonacciHeapNode root; private int count; /** Constructor **/ public FibonacciHeap() { root = null; count = 0; } /** Check if heap is empty **/ public boolean isEmpty() { return root == null; } /** Make heap empty **/ public void clear() { root = null; count = 0; } /** Function to insert **/ public void insert(int element) { FibonacciHeapNode node = new FibonacciHeapNode(element); node.element = element; if (root != null) { node.left = root; node.right = root.right; root.right = node; node.right.left = node; if (element < root.element) root = node; } else root = node; count++; } /** function to display **/ public void display() { System.out.print("\nHeap = "); FibonacciHeapNode ptr = root; if (ptr == null) { System.out.print("Empty\n"); return; } do { System.out.print(ptr.element +" "); ptr = ptr.right; } while (ptr != root && ptr.right != null); System.out.println(); } } /** Class FibonacciHeapTest **/ public class FibonacciHeapTest { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("FibonacciHeap Test\n\n"); FibonacciHeap fh = new FibonacciHeap(); char ch; /** Perform FibonacciHeap operations **/ do { System.out.println("\nFibonacciHeap Operations\n"); System.out.println("1. insert element "); System.out.println("2. check empty"); System.out.println("3. clear"); int choice = scan.nextInt(); switch (choice) { case 1 : System.out.println("Enter element"); fh.insert( scan.nextInt() ); break; case 2 : System.out.println("Empty status = "+ fh.isEmpty()); break; case 3 : fh.clear(); break; default : System.out.println("Wrong Entry \n "); break; } fh.display(); System.out.println("\nDo you want to continue (Type y or n) \n"); ch = scan.next().charAt(0); } while (ch == 'Y'|| ch == 'y'); } }
FibonacciHeap Test FibonacciHeap Operations 1. insert element 2. check empty 3. clear 1 Enter element 24 Heap = 24 Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 1 Enter element 6 Heap = 6 24 Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 1 Enter element 28 Heap = 6 28 24 Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 1 Enter element 14 Heap = 6 14 28 24 Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 1 Enter element 63 Heap = 6 63 14 28 24 Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 2 Empty status = false Heap = 6 63 14 28 24 Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 3 Heap = Empty Do you want to continue (Type y or n) y FibonacciHeap Operations 1. insert element 2. check empty 3. clear 2 Empty status = true Heap = Empty Do you want to continue (Type y or n) n
Related posts:
An Intro to Spring Cloud Vault
Redirect to Different Pages after Login with Spring Security
More Jackson Annotations
Java Program to Implement Expression Tree
Spring @RequestParam Annotation
Guide to @JsonFormat in Jackson
Java Program to Implement VList
Removing all Nulls from a List in Java
Debugging Reactive Streams in Java
Custom Exception trong Java
Java Program to Find Minimum Number of Edges to Cut to make the Graph Disconnected
Convert Character Array to String in Java
Using the Not Operator in If Conditions in Java
How to Use if/else Logic in Java 8 Streams
Registration with Spring Security – Password Encoding
Split a String in Java
Checked and Unchecked Exceptions in Java
Java Program to Implement Karatsuba Multiplication Algorithm
Spring MVC Custom Validation
Java Program to Perform Insertion in a 2 Dimension K-D Tree
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Java Program to Implement Stack using Two Queues
The StackOverflowError in Java
An Example of Load Balancing with Zuul and Eureka
Java Program to implement Dynamic Array
Java Program to Represent Graph Using Adjacency List
Java Program to Implement Bresenham Line Algorithm
Guide to the ConcurrentSkipListMap
Java Program to Implement Floyd Cycle Algorithm
Java Program to Check Cycle in a Graph using Graph traversal
Java Program to Implement Knight’s Tour Problem
Java Program to Solve the Fractional Knapsack Problem