This repository contains Jupyter Notebook files (.ipynb) covering various data structures and algorithms implemented in Python. Each notebook provides a comprehensive exploration of the theory, examples, and practical implementations of the respective topic. Whether you're a beginner looking to learn fundamental concepts or an experienced developer seeking to brush up on your knowledge, these notebooks serve as a valuable resource.
- Graphs.ipynb: Introduction to graphs, traversal algorithms, and graph representation techniques.
- Hashing.ipynb: Overview of hashing, hash functions, collision resolution strategies, and applications.
- Linked_lists.ipynb: Detailed explanation of linked lists, types of linked lists, and operations.
- Priority_queues_and_heaps.ipynb: Exploration of priority queues, binary heaps, and their applications.
- Queues.ipynb: Understanding queues, implementations, and applications of queue data structure.
- Recursion.ipynb: Concept of recursion, recursive algorithms, and their analysis.
- Searching_algorithms.ipynb: Overview of searching algorithms such as linear search, binary search, and their complexities.
- Sorting_algorithms.ipynb: Analysis and implementation of sorting algorithms including bubble sort, merge sort, quick sort, etc.
- Stacks.ipynb: Introduction to stacks, stack operations, and applications.
- Trees.ipynb: Detailed discussion on tree data structure, traversal techniques, and binary search trees.
The slides used in these notebooks are adapted from a Udemy course Data Structures and Algorithms: In-Depth using Python by Syed Mohiuddin: https://www.udemy.com/course/learning-data-structures-algorithms-in-python-from-scratch