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:
Java Program to Implement Max-Flow Min-Cut Theorem
Control the Session with Spring Security
Simplify the DAO with Spring and Java Generics
Java Program to Check Whether Graph is DAG
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
Find the Registered Spring Security Filters
Java Program to Implement Queue using Linked List
Spring MVC and the @ModelAttribute Annotation
Partition a List in Java
Uploading MultipartFile with Spring RestTemplate
Hashing a Password in Java
HashMap trong Java hoạt động như thế nào?
Guide to java.util.Formatter
Java Program to Perform Preorder Non-Recursive Traversal of a Given Binary Tree
Phương thức forEach() trong java 8
Introduction to the Functional Web Framework in Spring 5
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
How to Break from Java Stream forEach
Java Program to Implement Bloom Filter
Reading an HTTP Response Body as a String in Java
ETags for REST with Spring
Cachable Static Assets with Spring MVC
A Custom Media Type for a Spring REST API
Map Serialization and Deserialization with Jackson
Transactions with Spring and JPA
Converting String to Stream of chars
Spring Boot - Tomcat Port Number
Apache Commons Collections OrderedMap
String Joiner trong Java 8
Java Program to Implement SimpeBindings API
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
Java Program to Implement CopyOnWriteArraySet API