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 Give an Implementation of the Traditional Chinese Postman Problem
Setting Up Swagger 2 with a Spring REST API
Spring REST API + OAuth2 + Angular
Java Program to Implement RoleList API
Java Program to Perform Arithmetic Operations on Numbers of Size
Spring Security 5 – OAuth2 Login
Guide to java.util.concurrent.BlockingQueue
StringBuilder vs StringBuffer in Java
Java String to InputStream
Hướng dẫn sử dụng biểu thức chính quy (Regular Expression) trong Java
Java Program to Implement the Edmond’s Algorithm for Maximum Cardinality Matching
Java Program to Implement Affine Cipher
HttpClient 4 Cookbook
Biểu thức Lambda trong Java 8 – Lambda Expressions
String Processing with Apache Commons Lang 3
Map to String Conversion in Java
Java Program to Implement Graph Structured Stack
Quick Intro to Spring Cloud Configuration
The HttpMediaTypeNotAcceptableException in Spring MVC
Properties with Spring and Spring Boot
Transactions with Spring and JPA
Validations for Enum Types
Java Stream Filter with Lambda Expression
Spring WebClient Requests with Parameters
REST Pagination in Spring
Testing an OAuth Secured API with Spring MVC
Jackson – Change Name of Field
The Thread.join() Method in Java
Java Program to Solve TSP Using Minimum Spanning Trees
Jackson Unmarshalling JSON with Unknown Properties
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Java Program to Implement Heap’s Algorithm for Permutation of N Numbers