Algorithm
Why another algorithm tutorial ?
Numerous implementations of popular algorithms abound across various online platforms and blogs. While these resources serve their purpose well, my intention is not to supplant them. Rather, I recognize that for novice programmers, comprehension often comes more readily through visual aids such as videos rather than through traditional written materials.
While existing resources excel at teaching algorithms, few focus on techniques for longterm retention and efficient recall. Additionally, the ability to confidently discern problemsolving patterns is crucial. My aim is not to overwhelm with a plethora of algorithms, but rather to provide concise notes and visual aids for key algorithms, facilitating rapid review.
All diagrams presented herein are original creations, meticulously designed to enhance comprehension and recall. Crafting these aids required considerable effort, and I kindly request attribution if this content is reproduced elsewhere.
 Two Pointers
 Binary Search

Sliding Window
 Longest Substring Without Repeating Characters (Classic Sliding Window Problem)
 Find Maximum in Sliding Window
 Minimum Window Substring
 Longest Repeating Character Replacement
 Linked List

Tree
 Balanced Binary Tree
 Count Good Nodes in Binary Tree
 Merge Two Binary Trees
 Convert Sorted Array to Binary Search Tree
 Validate Binary Search Tree
 Sum Root to Leaf Numbers
 Binary Tree Right Side View
 Kth Smallest Element in a BST
 Diameter of a Binary Tree
 Construct Binary Tree from PreOrder and InOrder Traversal
 Same Tree
 Serialize and Deserialize Binary Tree
 Trim a Binary Search Tree
 Path Sum
 Binary Tree Maximum Path Sum
 Flatten Binary Tree to Linked List
 Graph
 Matrices
 Others
 Backtracking
 Greedy Techniques
 Dynamic Programming