A collection of classic and advanced Algorithms and Data Structures implemented in Python.
This repository was created as part of my Algorithms and Data Structures course and serves both as a study resource and a personal reference.
Each algorithm is written from scratch to demonstrate the core logic behind common computational techniques, data organization methods, and problem-solving paradigms.
- AVL Tree – a self-balancing binary search tree.
- Binary Tree – basic tree structure implementation.
- Heap – max/min heap with insertion and heapify operations.
- Skip List – probabilistic data structure for fast search, insertion, and deletion.
- Unrolled Linked List – optimized list structure storing multiple elements per node.
- Queue – simple FIFO queue implementation.
- Hash Table – associative array with hashing and collision handling.
- Bloom Filter – probabilistic structure for fast membership testing (uses a hash-based Rabin–Karp setup).
- Fulkerson Algorithm – maximum flow in a flow network.
- Jarvis March (Gift Wrapping) – convex hull algorithm for computational geometry.
- Pattern Search (Rabin–Karp) – substring search using rolling hashes.
- Prim’s Algorithm – finding a minimum spanning tree in a weighted graph.
- Shell Sort – efficient generalization of insertion sort.
- Suffix Array / Tree – structure for fast substring and pattern queries.
- Triangulation – geometric algorithm for polygon triangulation.
- Ullman’s Algorithm – subgraph isomorphism detection.
- Graph Coloring – assign colors to graph nodes so that adjacent nodes differ.
- Graph Algorithms (General) – BFS, DFS, Dijkstra, and more.
- Sort (swap) – basic bubble or selection-based sorting.
- Sort (shift) – insertion sort variant emphasizing element shifting.
Clone the repository and run any file directly:
git clone https://github.com/bkwasny1/Algorithms-in-python.git
cd algorithms-in-python
python3 AVLtree.py