Pick any programming language of your choice. If you want to build DSA from scratch, I'll suggest C/C++.
For a fantastic building, you need an extraordinary basement. Get a good understanding of pointers, structures, classes, dynamic memory allocation, and recursion. Learn how to find time and space complexities of algorithms and learn about the notations.
Learn about what is an array, how do they work, how data is stored in an array, how memory is managed in an array, and all other things. After knowing the basics of arrays, learn about the operations that we can perform on arrays like, insertion, deletion, replacing, searching, etc.
Two Dimensional Arrays | 2D Arrays
Learn basic searching algorithms such as, Linear search and Binary search, with their time complexities and use cases. There are many searching algorithms but learning these first will give a clear understanding of others.
Learn basic sorting algorithms that follow a NORMAL APPROACH such as selection sort, bubble sort, etc.
- Concatenation of Array
- Running Sum of 1d Array
- Richest Customer Wealth
- Square Root
- Guess Number Higher or Lower
- Merge Sorted Array
After Successful submission on Leetcode, copy the code in your text editor, Save it with name task1_[problemNumber].cpp for eg. task1_1.cpp ,put it in a folder with [UserName]_task1 for eg. anuragbhardwaj13_task1
Learn about Divide and Conquer methodology. Sorting algorithms such as merge sort, quick sort, and others follow this methodology.
Learn about what is a linked list, how do they work, how data is stored, how memory is managed, and all other things. After knowing the basics of linked lists, learn about the operations that we can perform on them like insertion, deletion, searching, traversing, reversing, etc. Learn about their applications. Also know the different types of linked lists.
After Successful submission on Leetcode, copy the code in your text editor, Save it with name task2_[problemNumber].cpp for eg. task2_1.cpp ,put it in a folder with [UserName]_task2 for eg. anuragbhardwaj13_task2
Follow the same steps as mentioned for linked lists.
Introduction to Prefix, Infix and Postfix
Introduction to Queue Data Structure
- Implement Queue using array
- Queue using two Stacks
- Valid Parentheses
- Infix to Postfix
- First Unique Character in a String
After Successful submission on Leetcode, copy the code in your text editor, Save it with name task3_[problemNumber].cpp for eg. task3_1.cpp ,put it in a folder with [UserName]_task3 for eg. anuragbhardwaj13_task3
Now we are coming to the most important part. Learn about binary trees, binary search trees, traversal methods, the height of a tree, and all other operations. Learn about the Depth-first search and Breadth-first search.
The same goes for Graphs. A tree, in fact, is a special type of graph.
Almost all algorithmic concepts that come under trees will definitely come under graphs.
Do an IN-DEPTH analysis for understanding these data structures.
Introduction to Graph | Types of Graph
Binary Tree Traversals| Preorder, Inorder, Postorder Traversal
Binary Search Trees | Introduction & Build
Search and Delete in Binary Search Tree
Construct Binary Search Tree from Preorder
- Merge Two Binary Trees
- Search in a Binary Search Tree
- Find Center of Star Graph
- Count the paths
- Minimum Swaps to Sort
After Successful submission on Leetcode, copy the code in your text editor, Save it with name task4_[problemNumber].cpp for eg. task4_1.cpp ,put it in a folder with [UserName]_task4 for eg. anuragbhardwaj13_task4