This is a Java Program to Implement Fenwick Tree. A Fenwick tree or binary indexed tree is a data structure providing efficient methods for calculation and manipulation of the prefix sums of a table of values.
Here is the source code of the Java Program to Implement Fenwick Tree. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
* Java Program to Implement Fenwick Tree
**/
import java.util.Scanner;
/** Class Fenwick Tree **/
public class FenwickTree
{
/** Function to update tree **/
private void update(int[] arr, int pos, int val)
{
int len = arr.length;
for (; pos < len; pos |= (pos + 1))
arr[pos] += val;
}
/** Function to query **/
private int query(int[] arr, int pos)
{
int sum = 0;
for (; pos >= 0; pos = (pos & (pos + 1)) - 1)
sum += arr[pos];
return sum;
}
/** Main method **/
public static void main(String[] args)
{
Scanner scan = new Scanner( System.in );
System.out.println("Fenwick Tree Test\n");
/** Accept number of elements **/
System.out.println("Enter number of integer elements");
int n = scan.nextInt();
/** Create integer array on n elements **/
int arr[] = new int[ n ];
FenwickTree ft = new FenwickTree();
/** update or find sum **/
char ch;
do
{
System.out.println("\nFenwick Tree Operations\n");
System.out.println("1. update ");
System.out.println("2. query");
int choice = scan.nextInt();
switch (choice)
{
case 1 :
System.out.println("Enter position and value to update");
ft.update(arr, scan.nextInt(), scan.nextInt() );
break;
case 2 :
System.out.println("Enter position to find sum till nth element");
try
{
System.out.println("Sum = "+ ft.query(arr, scan.nextInt()) );
}
catch (Exception e)
{
System.out.println("\nError! Out of bounds\n");
}
break;
default :
System.out.println("Wrong Entry \n ");
break;
}
System.out.println("\nDo you want to continue (Type y or n) \n");
ch = scan.next().charAt(0);
} while (ch == 'Y'|| ch == 'y');
}
}
Fenwick Tree Test Enter number of integer elements 5 Fenwick Tree Operations 1. update 2. query 1 Enter position and value to update 0 5 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 1 Enter position and value to update 1 4 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 1 Enter position and value to update 2 3 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 1 Enter position and value to update 3 2 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 1 Enter position and value to update 4 0 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 2 Enter position to find sum till nth element 1 Sum = 9 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 2 Enter position to find sum till nth element 2 Sum = 12 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 2 Enter position to find sum till nth element 3 Sum = 14 Do you want to continue (Type y or n) y Fenwick Tree Operations 1. update 2. query 2 Enter position to find sum till nth element 4 Sum = 14 Do you want to continue (Type y or n) n
Related posts:
Quick Guide to Spring Controllers
Tạo ứng dụng Java RESTful Client với thư viện OkHttp
Guide to Java 8 groupingBy Collector
Java Program to Describe the Representation of Graph using Adjacency Matrix
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset
Object cloning trong java
Java Program to Solve Set Cover Problem assuming at max 2 Elements in a Subset
Inheritance with Jackson
Java Program to Implement vector
Tránh lỗi NullPointerException trong Java như thế nào?
Guide to Selenium with JUnit / TestNG
Guide to Java Instrumentation
Spring MVC Content Negotiation
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Cài đặt và sử dụng Swagger UI
Java Program to add two large numbers using Linked List
Java Program to Implement D-ary-Heap
Spring Boot - Scheduling
Tạo chương trình Java đầu tiên sử dụng Eclipse
Java Program to Find Transitive Closure of a Graph
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Java Program to Implement Radix Sort
Circular Dependencies in Spring
Java Program to Implement Bucket Sort
Handling URL Encoded Form Data in Spring REST
HttpClient Connection Management
Toán tử trong java
Java Program to Implement Double Order Traversal of a Binary Tree
Mockito and JUnit 5 – Using ExtendWith
Hướng dẫn Java Design Pattern – Facade
How to Use if/else Logic in Java 8 Streams