# mxbrk/dsa-templates architecture

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

- Interactive diagram: https://gitdiagram.com/mxbrk/dsa-templates
- Repository: https://github.com/mxbrk/dsa-templates

## Overview

This repository is a set of standalone Python data-structure and algorithm examples, not a single application: there is no README-defined end-to-end workflow or shared runtime entry point. A user or caller selects a module and uses its class or functions; several files also run small demonstrations at import time. The graph shows those independent capabilities without implying they call one another. Relationships are limited to caller-to-module use because the sampled source shows no cross-module calls.

Main entry points: [`BinarySearchTree.py`](https://github.com/mxbrk/dsa-templates/blob/main/BinarySearchTree.py) (Search tree), [`DoubleLinkedList.py`](https://github.com/mxbrk/dsa-templates/blob/main/DoubleLinkedList.py) (Doubly linked list), [`LinkedList.py`](https://github.com/mxbrk/dsa-templates/blob/main/LinkedList.py) (Linked list), [`Heaps.py`](https://github.com/mxbrk/dsa-templates/blob/main/Heaps.py) (Min/max heaps)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_structures["Data structures"]
  node_bst["Search tree"]
  node_dll["Doubly linked list"]
  node_ll["Linked list<br/>[LinkedList.py]"]
  node_heap["Min/max heaps<br/>[Heaps.py]"]
  node_hash["Hash table<br/>[HashTable.py]"]
  node_graph["Undirected graph<br/>[Graphs.py]"]
  node_queue["Queue<br/>[Queue.py]"]
  node_stack["Stack<br/>[Stack.py]"]
end

subgraph group_algorithms["Algorithms"]
  node_sort["Basic sorts<br/>[Sort.py]"]
  node_merge["Merge sort<br/>[Merge.py]"]
  node_factorial["Factorial<br/>[factorial.py]"]
end

node_user(("Caller"))

node_user -->|"uses"| node_bst
node_user -->|"uses"| node_dll
node_user -->|"uses"| node_ll
node_user -->|"uses"| node_heap
node_user -->|"uses"| node_hash
node_user -->|"uses"| node_graph
node_user -->|"uses"| node_queue
node_user -->|"uses"| node_stack
node_user -->|"uses"| node_sort
node_user -->|"uses"| node_merge
node_user -->|"runs"| node_factorial

click node_bst "https://github.com/mxbrk/dsa-templates/blob/main/BinarySearchTree.py"
click node_dll "https://github.com/mxbrk/dsa-templates/blob/main/DoubleLinkedList.py"
click node_ll "https://github.com/mxbrk/dsa-templates/blob/main/LinkedList.py"
click node_heap "https://github.com/mxbrk/dsa-templates/blob/main/Heaps.py"
click node_hash "https://github.com/mxbrk/dsa-templates/blob/main/HashTable.py"
click node_graph "https://github.com/mxbrk/dsa-templates/blob/main/Graphs.py"
click node_queue "https://github.com/mxbrk/dsa-templates/blob/main/Queue.py"
click node_stack "https://github.com/mxbrk/dsa-templates/blob/main/Stack.py"
click node_sort "https://github.com/mxbrk/dsa-templates/blob/main/Sort.py"
click node_merge "https://github.com/mxbrk/dsa-templates/blob/main/Merge.py"
click node_factorial "https://github.com/mxbrk/dsa-templates/blob/main/factorial.py"

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_bst,node_dll,node_ll,node_heap,node_hash,node_graph,node_queue,node_stack toneBlue
class node_sort,node_merge,node_factorial toneAmber
class node_user toneIndigo
```

## Components

### Data structures

- [Search tree](https://github.com/mxbrk/dsa-templates/blob/main/BinarySearchTree.py): `BinarySearchTree.py`
- [Doubly linked list](https://github.com/mxbrk/dsa-templates/blob/main/DoubleLinkedList.py): `DoubleLinkedList.py`
- [Linked list](https://github.com/mxbrk/dsa-templates/blob/main/LinkedList.py): `LinkedList.py`
- [Min/max heaps](https://github.com/mxbrk/dsa-templates/blob/main/Heaps.py): `Heaps.py`
- [Hash table](https://github.com/mxbrk/dsa-templates/blob/main/HashTable.py): `HashTable.py`
- [Undirected graph](https://github.com/mxbrk/dsa-templates/blob/main/Graphs.py): `Graphs.py`
- [Queue](https://github.com/mxbrk/dsa-templates/blob/main/Queue.py): `Queue.py`
- [Stack](https://github.com/mxbrk/dsa-templates/blob/main/Stack.py): `Stack.py`

### Algorithms

- [Basic sorts](https://github.com/mxbrk/dsa-templates/blob/main/Sort.py): `Sort.py`
- [Merge sort](https://github.com/mxbrk/dsa-templates/blob/main/Merge.py): `Merge.py`
- [Factorial](https://github.com/mxbrk/dsa-templates/blob/main/factorial.py): `factorial.py`

### Other components

- **Caller**

## Connections

- Caller → Search tree: uses
- Caller → Doubly linked list: uses
- Caller → Linked list: uses
- Caller → Min/max heaps: uses
- Caller → Hash table: uses
- Caller → Undirected graph: uses
- Caller → Queue: uses
- Caller → Stack: uses
- Caller → Basic sorts: uses
- Caller → Merge sort: uses
- Caller → Factorial: runs
