Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 3.13 KB

File metadata and controls

47 lines (35 loc) · 3.13 KB

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.