Java - Data structures and Algorithms Stack Stack - array implementation Stack - linked list implementation Queue Queue - array implementation Queue - 2 stacks implementation Circular Queue Queue - Linked List implementation Priority Queue - Binary Heap Binary Heap - Min heap Linked Lists Singly Linked List Doubly Linked List Circular Singly Linked List Circular Doubly Linked List Recursion Convert number iterative Convert number recursive Factorial Fibonacci bad recursive solution Fibonacci recursive solution Fibonacci memoization Fibonacci iterative solution Fibonacci sum recursive Fibonacci sum iterative Maze - path finder Palindrome iterative solution Palindrome recursive solution Reverse array Reverse linked list iterative Reverse linked list iterative - stack Reverse linked list recursive Reverse string Sum numbers in array Sum numbers in array - binary recursion Towers of Hanoi Sorting Bubble Sort Insertion Sort QuickSort Selection Sort Short Bubble Merge Sort Searching Linear Search Unordered List Linear Search Ordered List Binary Search Binary Search Recursive Hash Table Hash Table - open addressing Hash Table - chaining Trie Trie Trees Tree Binary Search Tree AVL Tree Graphs Breadth First Search Depth First Search Depth First Search Recursive Test for connectivity - undirected graph Topological Sorting Cycle detection - directed graph Cycle detection - undirected graph Dijkstra algorithm Dijkstra algorithm - dense graphs Dijkstra algorithm - HashMap Prim's algorithm - minimum spanning tree