# klanes09/daa architecture

> Architecture diagram of the GitHub repository klanes09/daa, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/klanes09/daa
- Repository: https://github.com/klanes09/daa

## Overview

This repository is a collection of Java data-structure and algorithm exercises, with interactive console demos and a midterm runner that attempts timed runs across ten structures. The sampled demos read choices or values from the console and print operations or results. The runner directly invokes each structure’s run method, though the sampled implementations of those methods are mostly placeholders. No README content was provided; the tree identifies additional algorithm exercises whose behavior was not sampled.

Main entry points: [`Midterm/Analysis.java`](https://github.com/klanes09/daa/blob/main/Midterm/Analysis.java) (Structure runner), [`Prelim/PT1/Binary Trees/BinaryT.java`](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Binary%20Trees/BinaryT.java) (Binary tree), [`Prelim/PT1/Graphs/Graphs.java`](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Graphs/Graphs.java) (Graphs), [`Prelim/PT1/Heap/Max.java`](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Heap/Max.java) (Max heap)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_structures["Data Structures"]
  node_binarytree["Binary tree<br/>[BinaryT.java]"]
  node_graphs["Graphs<br/>[Graphs.java]"]
  node_maxheap["Max heap<br/>[Max.java]"]
  node_minheap["Min heap<br/>[Min.java]"]
  node_linkedlists["Linked lists"]
  node_circularlist["Circular list<br/>[LinCircular.java]"]
  node_doublylist["Doubly list<br/>[LinDoubly.java]"]
  node_singlylist["Singly list<br/>[LinSingly.java]"]
  node_queues["Queues<br/>[Que.java]"]
  node_priorityqueue["Priority queue<br/>[PrioQue.java]"]
  node_stacks["Stacks<br/>[STKS.java]"]
end

subgraph group_algorithms["Algorithms"]
  node_backtracking["Backtracking<br/>[Backtracking.java]"]
  node_divideconquer["Divide and conquer<br/>[DaC.java]"]
  node_fibonacci["Fibonacci<br/>[Fibonocci.java]"]
  node_greedy["Greedy algorithms<br/>[Greedy.java]"]
end

subgraph group_analysis["Analysis Runner"]
  node_analysisrunner["Structure runner<br/>[Analysis.java]"]
end

node_user(("Console user"))

node_user -->|"enters values"| node_binarytree
node_user -->|"enters edges"| node_graphs
node_user -->|"chooses operations"| node_maxheap
node_user -->|"chooses operations"| node_minheap
node_user -->|"chooses operations"| node_circularlist
node_user -->|"chooses operations"| node_doublylist
node_user -->|"chooses operations"| node_queues
node_user -->|"chooses operations"| node_priorityqueue
node_user -->|"chooses operations"| node_stacks
node_user -->|"enters array"| node_divideconquer
node_user -->|"runs example"| node_greedy
node_user -->|"starts run"| node_analysisrunner
node_analysisrunner -->|"invokes runBinaryT"| node_binarytree
node_analysisrunner -->|"invokes runGraphs"| node_graphs
node_analysisrunner -->|"invokes runMax"| node_maxheap
node_analysisrunner -->|"invokes runMin"| node_minheap
node_analysisrunner -->|"invokes runCircular"| node_circularlist
node_analysisrunner -->|"invokes runDoubly"| node_doublylist
node_analysisrunner -->|"invokes runSingly"| node_singlylist
node_analysisrunner -->|"invokes runPriorityQue"| node_priorityqueue
node_analysisrunner -->|"invokes runQueue"| node_queues
node_analysisrunner -->|"invokes runSTKS"| node_stacks

click node_binarytree "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Binary%20Trees/BinaryT.java"
click node_graphs "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Graphs/Graphs.java"
click node_maxheap "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Heap/Max.java"
click node_minheap "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Heap/Min.java"
click node_linkedlists "https://github.com/klanes09/daa/tree/main/Prelim/PT1/LinkedList"
click node_circularlist "https://github.com/klanes09/daa/blob/main/Prelim/PT1/LinkedList/LinCircular.java"
click node_doublylist "https://github.com/klanes09/daa/blob/main/Prelim/PT1/LinkedList/LinDoubly.java"
click node_singlylist "https://github.com/klanes09/daa/blob/main/Prelim/PT1/LinkedList/LinSingly.java"
click node_queues "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Queues/Que.java"
click node_priorityqueue "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Queues/PrioQue.java"
click node_stacks "https://github.com/klanes09/daa/blob/main/Prelim/PT1/Stacks/STKS.java"
click node_backtracking "https://github.com/klanes09/daa/blob/main/Prelim/PT2/Backtracking.java"
click node_divideconquer "https://github.com/klanes09/daa/blob/main/Prelim/PT2/DaC.java"
click node_fibonacci "https://github.com/klanes09/daa/blob/main/Prelim/PT2/Fibonocci.java"
click node_greedy "https://github.com/klanes09/daa/blob/main/Prelim/PT2/Greedy.java"
click node_analysisrunner "https://github.com/klanes09/daa/blob/main/Midterm/Analysis.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_binarytree,node_graphs,node_maxheap,node_minheap,node_linkedlists,node_circularlist,node_doublylist,node_singlylist,node_queues,node_priorityqueue,node_stacks,node_user toneBlue
class node_backtracking,node_divideconquer,node_fibonacci,node_greedy toneAmber
class node_analysisrunner toneMint
```

## Components

### Data Structures

- [Binary tree](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Binary%20Trees/BinaryT.java): `Prelim/PT1/Binary Trees/BinaryT.java`
- [Graphs](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Graphs/Graphs.java): `Prelim/PT1/Graphs/Graphs.java`
- [Max heap](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Heap/Max.java): `Prelim/PT1/Heap/Max.java`
- [Min heap](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Heap/Min.java): `Prelim/PT1/Heap/Min.java`
- [Linked lists](https://github.com/klanes09/daa/tree/main/Prelim/PT1/LinkedList): `Prelim/PT1/LinkedList`
- [Circular list](https://github.com/klanes09/daa/blob/main/Prelim/PT1/LinkedList/LinCircular.java): `Prelim/PT1/LinkedList/LinCircular.java`
- [Doubly list](https://github.com/klanes09/daa/blob/main/Prelim/PT1/LinkedList/LinDoubly.java): `Prelim/PT1/LinkedList/LinDoubly.java`
- [Singly list](https://github.com/klanes09/daa/blob/main/Prelim/PT1/LinkedList/LinSingly.java): `Prelim/PT1/LinkedList/LinSingly.java`
- [Queues](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Queues/Que.java): `Prelim/PT1/Queues/Que.java`
- [Priority queue](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Queues/PrioQue.java): `Prelim/PT1/Queues/PrioQue.java`
- [Stacks](https://github.com/klanes09/daa/blob/main/Prelim/PT1/Stacks/STKS.java): `Prelim/PT1/Stacks/STKS.java`

### Algorithms

- [Backtracking](https://github.com/klanes09/daa/blob/main/Prelim/PT2/Backtracking.java): `Prelim/PT2/Backtracking.java`
- [Divide and conquer](https://github.com/klanes09/daa/blob/main/Prelim/PT2/DaC.java): `Prelim/PT2/DaC.java`
- [Fibonacci](https://github.com/klanes09/daa/blob/main/Prelim/PT2/Fibonocci.java): `Prelim/PT2/Fibonocci.java`
- [Greedy algorithms](https://github.com/klanes09/daa/blob/main/Prelim/PT2/Greedy.java): `Prelim/PT2/Greedy.java`

### Analysis Runner

- [Structure runner](https://github.com/klanes09/daa/blob/main/Midterm/Analysis.java): `Midterm/Analysis.java`

### Other components

- **Console user**

## Connections

- Console user → Binary tree: enters values
- Console user → Graphs: enters edges
- Console user → Max heap: chooses operations
- Console user → Min heap: chooses operations
- Console user → Circular list: chooses operations
- Console user → Doubly list: chooses operations
- Console user → Queues: chooses operations
- Console user → Priority queue: chooses operations
- Console user → Stacks: chooses operations
- Console user → Divide and conquer: enters array
- Console user → Greedy algorithms: runs example
- Console user → Structure runner: starts run
- Structure runner → Binary tree: invokes runBinaryT
- Structure runner → Graphs: invokes runGraphs
- Structure runner → Max heap: invokes runMax
- Structure runner → Min heap: invokes runMin
- Structure runner → Circular list: invokes runCircular
- Structure runner → Doubly list: invokes runDoubly
- Structure runner → Singly list: invokes runSingly
- Structure runner → Priority queue: invokes runPriorityQue
- Structure runner → Queues: invokes runQueue
- Structure runner → Stacks: invokes runSTKS
