Hey there 👋. This repository contains codes to all the problems that I solved in Coding Ninjas Data structure and algorithms course.
👉🏻RECURSION
Introduction to recursion, Principle of mathematical induction, Fibonacci numbers, Recursion using arrays, Recursion using strings, Recursion using 2D arrays.
👉🏻TIME AND SPACE COMPLEXITY
Order complexity analysis, Theoretical complexity analysis, Time complexity analysis of searching and recursive algorithms, Theoretical space complexity, Space complexity analysis of merge sort.
👉🏻BASICS OF OOPS
Introduction to OOPS, Creating objects, Getters and setters, Constructors and related concepts, Inbuilt constructor and destructor, Example classes.
👉🏻ADVANCE CONCEPTS OF OOPS
Static members, Function overloading and related concepts, Abstraction, Encapsulation, Inheritance, Polymorphism, Virtual functions, Abstract classes, Exception handling.
👉🏻LINKED LISTS
Introduction to linked list, Inserting node in linked list, Deleting node from linked list, Midpoint of linked list, Merge two sorted linked lists, merge sort of a linked list, Reversing a linked list.
👉🏻STACKS AND QUEUES
Introduction to stacks, Stack using arrays, Dynamic Stack class,Stack using linked list, Inbuilt stack, Queue using arrays, Dynamic queue class, Queue using linked list, Inbuilt queue.
👉🏻GENERIC TREES
Introduction to Trees, Making a tree node class, Taking a tree as input and printing, Tree traversals, Destructor for tree node class.
👉🏻BINARY TREES
Introduction to Binary Trees, Taking a binary tree as input and printing, Binary Tree traversals, Diameter of binary tree.
👉🏻BINARY SEARCH TREES
Introduction to Binary Search Trees, Searching a node in BST, BST class, Inserting and Deleting nodes in BST, Types of balanced BSTs.
👉🏻INTRODUCTION TO DYNAMIC PROGRAMMING
Introduction to Memoization, Introduction to Dynamic Programming, Fibonacci numbers using recursion, memoization and dynamic programming.
👉🏻APPLICATIONS OF DYNAMIC PROGRAMMING
Longest Common Subsequence (LCS) using recursion, memoization and dynamic programming, Edit distance using recursion, memoization and dynamic programming, Knapsack problem using recursion, memoization and dynamic programming.