---
id: topics
title: Topics
---

## Arrays

## Strings

- Prefix trees (Tries)
- Suffix trees
- Suffix arrays
- KMP
- Rabin-Karp
- Boyer-Moore

## Sorting

- Bubble sort
- Insertion sort
- Merge sort
- Quick sort
- Selection sort
- Bucket sort
- Radix sort
- Counting sort

## Linked Lists

## Stacks

## Queues

## Hash tables

- Collision resolution algorithms

## Trees

- BFS
- DFS (inorder, postorder, preorder)
- Height

## Binary Search Trees

- Insert node
- Delete a node
- Find element in BST
- Find min, max element in BST
- Get successor element in tree
- Check if a binary tree is a BST or not

## Heaps / Priority Queues

- Insert
- Bubble up
- Extract max
- Remove
- Heapify
- Heap sort

## Graphs

- Various implementations
  - Adjacency matrix
  - Adjacency list
  - Adjacency map
- Single-source shortest path
- Dijkstra
- Bellman-Ford
- Topo sort
- MST
- Prim algorithm
- Kruskal's algorithm
- Union Find Data Structure
- Count connected components in a graph
- List strongly connected components in a graph
- Check for bipartite graph

## Dynamic Programming

- Count Change
- 0-1 Knapsack

## System Design

- http://www.hiredintech.com/system-design/
- https://www.quora.com/How-do-I-prepare-to-answer-design-questions-in-a-technical-interview?redirected_qid=1500023
- http://blog.gainlo.co/index.php/2015/10/22/8-things-you-need-to-know-before-system-design-interviews/
- https://github.com/donnemartin/system-design-primer
- https://github.com/jwasham/coding-interview-university/blob/master/extras/cheat%20sheets/system-design.pdf