## Search Algorithms

In this section, we will be learning about various search algorithms. As the name says it is a searching algorithm that is used for checking whether the given data is present in a collection of data or not.

**Linear Search****Binary Search (**Most used algorithm for search in real life and Competitive Programming.)

## Sorting Algorithms

## Graph Algorithms

In this series of the topic, we explore various algorithm and concept related to Graph Algorithms and their implementation in C++. Each topic consists of **Notes, Curated Practice Problems, and YouTube** videos for Proper Understanding.

**Basic Graph Theory****Graph Representation****Graph Traversal****Breadth-First Search****Depth First Search**

**Application of DFS****Connected Component, Articulation Points, Bridges****Cycle Detection**

**Application of BFS****Connected Component, Cycle Detection**

**Tree Algorithms****Different types of Tree Traversal****Diagonal of Tree****All Longest Paths****Counting Number of nodes in Subtree**

**Shortest Path Algorithms****Introduction to Shortest Path & Bellman-Ford Algorithms****Dijkstra Algorithm****Floyd-Warshall’s Algorithm**

**Minimum Spanning Tree****Introduction to Spanning Tree, MST, Kruskal’s Algorithm****Prim’s Algorithm**

**Directed Graphs****Topological Sort****Acyclic Graph Problem Solving using Dynamic Programming****Successor Paths and Cycle Detection using Floyd’s Algorithm in DAG**

**Strongly Connected Components****Tree Queries****Finding K-th Ancestors****Subtree and Path Queries****Lowest Common Ancestors**

**Flood-fill Algorithm****Biconnected Components****Hamiltonian Path****Maximum Flow****Minimum Cost Maximum Flow****Min-cut**

## String Algorithms

**Basics of String Manipulation****String Searching****Z Algorithm****Manachar’s Algorithm**