Data Structures & Algorithms in Kotlin Sorting Insertion Sort Selection Sort Bubble Sort Merge Sort Quick Sort Shell Sort Heap Sort Data Structures Queue Stack Dequeue Priority Queue Indexed Priority Queue Disjoint Set (Union Find) Tree Binary Tree Binary Search Tree Immutable Set (based on binary search) Search Linear Search Binary Search Graphs Breadth First Search Depth First Search Kruskal's minimum spanning tree Prim's minimum spanning tree Boruvka's minimum spanning tree Dijkstra's shortest paths Math GCD / LCM Newton Method Binomial Geometry Gift wrapping (Jarvis) Graham Scan Quickhull Voronoi Diagram (Naïve implementation) Sierpinski triangle Substring search Knuth–Morris–Pratt (KMP) Codes