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:
The Registration API becomes RESTful
Hướng dẫn sử dụng luồng vào ra ký tự trong Java
Vector trong Java
Java Program to Compute Cross Product of Two Vectors
Read an Outlook MSG file
Java Program to Perform Optimal Paranthesization Using Dynamic Programming
Java – Combine Multiple Collections
Spring Boot - Eureka Server
Send an email using the SMTP protocol
Các kiểu dữ liệu trong java
Java InputStream to String
How to Get the Last Element of a Stream in Java?
Mệnh đề if-else trong java
wait() and notify() Methods in Java
Java Program to Implement Best-First Search
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Java – Write a Reader to File
Simultaneous Spring WebClient Calls
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Serialize Only Fields that meet a Custom Criteria with Jackson
Spring Boot - Web Socket
Spring Boot - Hystrix
How to Get a Name of a Method Being Executed?
Java Program to Implement Segment Tree
@Lookup Annotation in Spring
How to Round a Number to N Decimal Places in Java
A Quick Guide to Using Keycloak with Spring Boot
Java Program to Perform Partial Key Search in a K-D Tree
Java Program to Perform Stooge Sort
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Java Program to Implement Nth Root Algorithm
Java Program to Implement Network Flow Problem