# suyash-kamath/dsa-in-java architecture

> Architecture diagram of the GitHub repository suyash-kamath/dsa-in-java, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/suyash-kamath/dsa-in-java
- Repository: https://github.com/suyash-kamath/dsa-in-java

## Overview

This repository is a collection of standalone Java data-structure and algorithm examples, not a single application. The typical user workflow is to select an example, provide or edit its input in that file’s `main` method, and inspect the computed result. The examples cover arrays, searching, linked lists, recursion and sorting, stacks, and strings. There is no shared application entry point or demonstrated cross-module runtime flow; many files were not sampled, so the map groups those examples by topic without asserting calls between them.

Main entry points: [`arrays/ArrayProblemsI.java`](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/ArrayProblemsI.java) (Array operations), [`arrays/RotateImage.java`](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/RotateImage.java) (Array transforms), [`arrays/SortArrayOfZeroesOnesTwos.java`](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/SortArrayOfZeroesOnesTwos.java) (Array ordering), [`arrays/ThreeSum.java`](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/ThreeSum.java) (Array selection)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_arrays["Array algorithms"]
  node_array_basics["Array operations"]
  node_array_transform["Array transforms<br/>[RotateImage.java]"]
  node_array_order["Array ordering"]
  node_array_selection["Array selection<br/>[ThreeSum.java]"]
end

subgraph group_search["Search algorithms"]
  node_binary_search["Binary search<br/>[BinarySearch.java]"]
  node_matrix_search["Matrix search"]
  node_special_search["Specialized search"]
end

subgraph group_lists["Linked lists"]
  node_singly_list["Singly linked list"]
  node_circular_doubly_list["Circular doubly list"]
  node_circular_singly_list["Circular singly list"]
  node_list_algorithms["List algorithms"]
end

subgraph group_recursion_sorting["Recursion and sorting"]
  node_recursive_search["Recursive search<br/>[BinarySearch.java]"]
  node_recursive_combinations["Combinations and puzzles"]
  node_recursive_sorting["Recursive sorting<br/>[MergeSort.java]"]
  node_iterative_sorting["Basic sorting<br/>[InsertionSort.java]"]
end

subgraph group_stack_strings["Stacks and strings"]
  node_stack_structures["Stack implementations"]
  node_stack_expressions["Expression processing<br/>[DecodeString.java]"]
  node_stack_parentheses["Parenthesis algorithms"]
  node_stack_paths["Path simplification<br/>[SimplifyPath.java]"]
  node_string_algorithms["String algorithms"]
end

node_user(("Example user"))

node_user -.->|"selects example"| node_array_basics
node_user -.->|"selects example"| node_array_transform
node_user -.->|"selects example"| node_array_order
node_user -.->|"selects example"| node_array_selection
node_user -.->|"selects example"| node_binary_search
node_user -.->|"selects example"| node_matrix_search
node_user -.->|"selects example"| node_special_search
node_user -.->|"selects example"| node_singly_list
node_user -.->|"selects example"| node_circular_doubly_list
node_user -.->|"selects example"| node_circular_singly_list
node_user -.->|"selects example"| node_list_algorithms
node_user -.->|"selects example"| node_recursive_search
node_user -.->|"selects example"| node_recursive_combinations
node_user -.->|"selects example"| node_recursive_sorting
node_user -.->|"selects example"| node_iterative_sorting
node_user -.->|"selects example"| node_stack_structures
node_user -.->|"selects example"| node_stack_expressions
node_user -.->|"selects example"| node_stack_parentheses
node_user -.->|"selects example"| node_stack_paths
node_user -.->|"selects example"| node_string_algorithms

click node_array_basics "https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/ArrayProblemsI.java"
click node_array_transform "https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/RotateImage.java"
click node_array_order "https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/SortArrayOfZeroesOnesTwos.java"
click node_array_selection "https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/ThreeSum.java"
click node_binary_search "https://github.com/suyash-kamath/dsa-in-java/blob/main/binary_search/BinarySearch.java"
click node_matrix_search "https://github.com/suyash-kamath/dsa-in-java/blob/main/binary_search/Search2DMatrixVariant2.java"
click node_special_search "https://github.com/suyash-kamath/dsa-in-java/blob/main/binary_search/SearchInARotatedSortedArray.java"
click node_singly_list "https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/SinglyLinkedList.java"
click node_circular_doubly_list "https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/CircularDoublyLinkedList.java"
click node_circular_singly_list "https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/CircularSinglyLinkedList.java"
click node_list_algorithms "https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/ReverseLinkedList.java"
click node_recursive_search "https://github.com/suyash-kamath/dsa-in-java/blob/main/recursion/BinarySearch.java"
click node_recursive_combinations "https://github.com/suyash-kamath/dsa-in-java/blob/main/recursion/CombinationSumIII.java"
click node_recursive_sorting "https://github.com/suyash-kamath/dsa-in-java/blob/main/recursion/MergeSort.java"
click node_iterative_sorting "https://github.com/suyash-kamath/dsa-in-java/blob/main/sorting_algorithms/InsertionSort.java"
click node_stack_structures "https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/NStacksInAnArray.java"
click node_stack_expressions "https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/DecodeString.java"
click node_stack_parentheses "https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/LongestValidParentheses.java"
click node_stack_paths "https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/SimplifyPath.java"
click node_string_algorithms "https://github.com/suyash-kamath/dsa-in-java/blob/main/strings/MostFrequentCharacter.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_array_basics,node_array_transform,node_array_order,node_array_selection,node_user toneBlue
class node_binary_search,node_matrix_search,node_special_search toneAmber
class node_singly_list,node_circular_doubly_list,node_circular_singly_list,node_list_algorithms toneMint
class node_recursive_search,node_recursive_combinations,node_recursive_sorting,node_iterative_sorting toneRose
class node_stack_structures,node_stack_expressions,node_stack_parentheses,node_stack_paths,node_string_algorithms toneIndigo
```

## Components

### Array algorithms

- [Array operations](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/ArrayProblemsI.java): `arrays/ArrayProblemsI.java`
- [Array transforms](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/RotateImage.java): `arrays/RotateImage.java`
- [Array ordering](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/SortArrayOfZeroesOnesTwos.java): `arrays/SortArrayOfZeroesOnesTwos.java`
- [Array selection](https://github.com/suyash-kamath/dsa-in-java/blob/main/arrays/ThreeSum.java): `arrays/ThreeSum.java`

### Search algorithms

- [Binary search](https://github.com/suyash-kamath/dsa-in-java/blob/main/binary_search/BinarySearch.java): `binary_search/BinarySearch.java`
- [Matrix search](https://github.com/suyash-kamath/dsa-in-java/blob/main/binary_search/Search2DMatrixVariant2.java): `binary_search/Search2DMatrixVariant2.java`
- [Specialized search](https://github.com/suyash-kamath/dsa-in-java/blob/main/binary_search/SearchInARotatedSortedArray.java): `binary_search/SearchInARotatedSortedArray.java`

### Linked lists

- [Singly linked list](https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/SinglyLinkedList.java): `linked_list/SinglyLinkedList.java`
- [Circular doubly list](https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/CircularDoublyLinkedList.java): `linked_list/CircularDoublyLinkedList.java`
- [Circular singly list](https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/CircularSinglyLinkedList.java): `linked_list/CircularSinglyLinkedList.java`
- [List algorithms](https://github.com/suyash-kamath/dsa-in-java/blob/main/linked_list/ReverseLinkedList.java): `linked_list/ReverseLinkedList.java`

### Recursion and sorting

- [Recursive search](https://github.com/suyash-kamath/dsa-in-java/blob/main/recursion/BinarySearch.java): `recursion/BinarySearch.java`
- [Combinations and puzzles](https://github.com/suyash-kamath/dsa-in-java/blob/main/recursion/CombinationSumIII.java): `recursion/CombinationSumIII.java`
- [Recursive sorting](https://github.com/suyash-kamath/dsa-in-java/blob/main/recursion/MergeSort.java): `recursion/MergeSort.java`
- [Basic sorting](https://github.com/suyash-kamath/dsa-in-java/blob/main/sorting_algorithms/InsertionSort.java): `sorting_algorithms/InsertionSort.java`

### Stacks and strings

- [Stack implementations](https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/NStacksInAnArray.java): `stack/NStacksInAnArray.java`
- [Expression processing](https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/DecodeString.java): `stack/DecodeString.java`
- [Parenthesis algorithms](https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/LongestValidParentheses.java): `stack/LongestValidParentheses.java`
- [Path simplification](https://github.com/suyash-kamath/dsa-in-java/blob/main/stack/SimplifyPath.java): `stack/SimplifyPath.java`
- [String algorithms](https://github.com/suyash-kamath/dsa-in-java/blob/main/strings/MostFrequentCharacter.java): `strings/MostFrequentCharacter.java`

### Other components

- **Example user**

## Connections

- Example user → Array operations: selects example
- Example user → Array transforms: selects example
- Example user → Array ordering: selects example
- Example user → Array selection: selects example
- Example user → Binary search: selects example
- Example user → Matrix search: selects example
- Example user → Specialized search: selects example
- Example user → Singly linked list: selects example
- Example user → Circular doubly list: selects example
- Example user → Circular singly list: selects example
- Example user → List algorithms: selects example
- Example user → Recursive search: selects example
- Example user → Combinations and puzzles: selects example
- Example user → Recursive sorting: selects example
- Example user → Basic sorting: selects example
- Example user → Stack implementations: selects example
- Example user → Expression processing: selects example
- Example user → Parenthesis algorithms: selects example
- Example user → Path simplification: selects example
- Example user → String algorithms: selects example
