Skip to content

Python implementations of core data structures and algorithms — including graphs, trees, recursion, hash maps, and linked lists. Developed for the Algorithms and Data Structures (AYED) course at Escuela Colombiana de Ingeniería, Jan–May 2024.

Notifications You must be signed in to change notification settings

LePeanutButter/structured-dsa-python

Repository files navigation

Algorithms and Data Structures Collection (Jan – May 2024)

This repository contains a collection of labs developed between January and May 2024 as part of a course on Data Structures and Algorithms, using Python.

Overview

This repository is a comprehensive collection of projects demonstrating fundamental algorithms and data structures implemented in Python. The repository is organized into the following folders, each focusing on a specific area:

  • binary-tree-reconstruction
    Purpose: Reconstruct binary trees from traversal orders (pre-order and in-order) and output the post-order traversal.
    Key Concepts: Tree traversal, recursion, and binary tree construction.

  • dijkstra-heap-optimization
    Purpose: Optimize Dijkstra's algorithm for finding the shortest path in a weighted graph using a binary heap and HeapSort techniques (both min-heap and max-heap variants).
    Key Concepts: Graph theory, priority queues, heap optimization, and shortest path algorithms.

  • double-linkedlist
    Purpose: Implement a double-linked list to manage collections of data (such as a LIFO stack for Book objects), demonstrating dynamic memory manipulation and efficient insertion/deletion operations.
    Key Concepts: Linked lists, LIFO stacks, object-oriented programming, and dynamic data structures.

  • graph-search-algorithms
    Purpose: Implement classic graph search methods—Breadth-First Search (BFS) and Depth-First Search (DFS)—on graphs constructed from practical problems (e.g., maze/labyrinth solving).
    Key Concepts: Graph representations (adjacency matrix and list), graph traversals, and real-world search problems.

  • hash-table-collision-resolution
    Purpose: Address collision handling in hash tables by implementing strategies (such as chaining) that allow efficient insertion, deletion, and searching in a hash-based data structure.
    Key Concepts: Hashing, collision resolution, and data retrieval efficiency.

  • recursive-algorithms
    Purpose: Showcase a suite of recursive solutions to common computational problems, including sorting arrays, summing subarrays, computing the greatest common divisor, converting integers to binary, and reversing lists.
    Key Concepts: Recursion, divide-and-conquer strategies, mathematical recurrences, and algorithm design.

How to Use

Each folder is self-contained with its own README file that details its purpose, input/output requirements, and sample test cases. To run any of the projects:

  1. Navigate to the folder of interest.
  2. Follow the specific instructions provided in that folder’s README file.
  3. Run the corresponding Python file using:
    python <filename>.py

Authors

Originally developed by a team of three contributors. This repository was published in 2025 for archival and reference purposes. Commit history does not reflect the original development dates.

About

Python implementations of core data structures and algorithms — including graphs, trees, recursion, hash maps, and linked lists. Developed for the Algorithms and Data Structures (AYED) course at Escuela Colombiana de Ingeniería, Jan–May 2024.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages