Recursion: A technique used in programming where a function calls itself to solve a problem or perform a task.
Iteration: A programming technique that involves repeating a sequence of instructions until a specific condition is met.
Search algorithms: Algorithms used to find a specific item or element within a collection of data.
Linear search: A search algorithm that sequentially checks each element in a collection until the target item is found.
Binary search: A search algorithm that divides a sorted collection in half at each step to quickly find the target item.
Depth-first search: A search algorithm that explores a graph by visiting as far as possible along each branch before backtracking.
Breadth-first search: A search algorithm that explores a graph by visiting all the neighbours of a node before moving on to the next level.
Sorting algorithms: Algorithms used to arrange a collection of data in a specific order.
Bubble sort: A simple sorting algorithm that repeatedly steps through the list, compares adjacent elements and swaps them if they are in the wrong order.
Selection sort: A sorting algorithm that selects the smallest element from an unsorted list in each iteration and places it at the beginning of the list.
Insertion sort: A sorting algorithm that builds the final sorted list one element at a time by inserting each element in its proper place.
Quicksort: A divide-and-conquer sorting algorithm that partitions a list into two smaller sub-lists, and recursively sorts each sub-list.
Mergesort: A divide-and-conquer sorting algorithm that divides a list into smaller sub-lists, sorts those sub-lists, and merges them back into a single sorted list.
Heapsort: A sorting algorithm that uses a binary heap data structure to sort a list of items.
Complexity: A measure of how much time or memory an algorithm requires to solve a problem or perform a task.
Trees: Data structures that consist of nodes connected by edges, used to represent hierarchical relationships.
Binary trees: Trees where each node has at most two child nodes.
Balanced trees: Trees where the height of the left and right subtrees of any node differ by at most one.
Non-binary trees: Trees where each node can have more than two child nodes.
Linked lists: Data structures that consist of a sequence of nodes, each containing a data value and a pointer to the next (and sometimes previous) node.
Singly linked lists: Linked lists where each node has a pointer to the next node.
Doubly linked lists: Linked lists where each node has pointers to both the next and previous nodes.
Circular linked lists: Linked lists where the last node points back to the first node, forming a circle.
Stack: A data structure that follows the Last In First Out (LIFO) principle, where the last item added is the first one to be removed.
Queue: A data structure that follows the First In First Out (FIFO) principle, where the first item added is the first one to be removed.