gitextract_x7v3a_w5/ ├── .gitignore ├── LICENSE ├── README.md ├── analysis/ │ ├── anagrams-linear-solution.py │ ├── anagrams-loglinear-solution.py │ ├── anagrams-quadratic-solution.py │ ├── time-iterative-approach.py │ └── time-noniterative-approach.py ├── deque/ │ ├── circular-deque.py │ ├── deque.py │ └── deque_linked_list_impl.py ├── graphs/ │ ├── bellman-ford/ │ │ └── graph.py │ ├── bellman-ford-negative-weight-cycle/ │ │ └── graph.py │ ├── breadth-first-search/ │ │ ├── graph.py │ │ ├── main.py │ │ └── queue.py │ ├── cycle-detection/ │ │ ├── Cycle.md │ │ ├── cycle-directed-graph/ │ │ │ ├── graph.py │ │ │ └── main.py │ │ └── cycle-undirected-graph/ │ │ ├── graph.py │ │ └── main.py │ ├── depth-first-search/ │ │ ├── depth-first-search/ │ │ │ ├── graph.py │ │ │ ├── main.py │ │ │ └── stack.py │ │ └── depth-first-search-recursive/ │ │ ├── graph.py │ │ └── main.py │ ├── dijkstra/ │ │ ├── adjacency-list-impl/ │ │ │ ├── main.py │ │ │ └── vertex.py │ │ ├── matrix-impl/ │ │ │ ├── graph.py │ │ │ ├── main.py │ │ │ └── vertex.py │ │ └── priority-queue-impl-adjacency-map/ │ │ ├── graph.py │ │ ├── main.py │ │ ├── priorityqueue.py │ │ └── vertex.py │ ├── is-graph-bipartite/ │ │ ├── graph.py │ │ ├── main.py │ │ └── queue.py │ ├── kosarajus-algorithm/ │ │ ├── graph.py │ │ ├── main.py │ │ └── stack.py │ ├── minimum-spanning-tree/ │ │ ├── breadth-first-search/ │ │ │ ├── graph.py │ │ │ ├── main.py │ │ │ └── queue.py │ │ ├── kruskals-algorithm/ │ │ │ ├── graph.py │ │ │ └── main.py │ │ └── prims-algorithm/ │ │ ├── graph.py │ │ ├── main.py │ │ ├── priorityqueue.py │ │ └── vertex.py │ ├── topological-sorting/ │ │ ├── graph.py │ │ └── main.py │ └── union-find/ │ ├── number-of-connected-components/ │ │ └── graph.py │ └── union-find-path-compression/ │ ├── graph.py │ ├── main.py │ └── vertex.py ├── hash-table/ │ ├── chaining.py │ └── linear-probing.py ├── linked-lists/ │ ├── circular-doubly-linked-list/ │ │ ├── list.py │ │ └── node.py │ ├── circular-singly-linked-list/ │ │ ├── list.py │ │ └── node.py │ ├── doubly-linked-list/ │ │ ├── list.py │ │ └── node.py │ └── singly-linked-list/ │ ├── list.py │ └── node.py ├── queue/ │ ├── circular-queue-fixed-size-array-impl.py │ ├── queue-array-impl.py │ ├── queue-fixed-size-array-impl.py │ ├── queue-linked-list-impl.py │ └── queue-two-stacks-impl.py ├── recursion/ │ ├── convert-number-iterative.py │ ├── convert-number.py │ ├── factorial.py │ ├── fibonacci-iterative.py │ ├── fibonacci-memoization.py │ ├── fibonacci-recursive-worst-solution.py │ ├── fibonacci-recursive.py │ ├── fibonacci-sum-iterative.py │ ├── fibonacci-sum-recursive.py │ ├── maze.py │ ├── palindrome.py │ ├── reverse-linked-list-iterative-stack.py │ ├── reverse-linked-list-iterative.py │ ├── reverse-linked-list.py │ ├── reverse-list.py │ ├── reverse-string.py │ ├── stack.py │ ├── sum-numbers-binary-recursion.py │ ├── sum-numbers-pointer.py │ ├── sum-numbers-slicing.py │ └── towers-of-hanoi.py ├── searching/ │ ├── binary-search-iterative.py │ ├── binary-search-recursive-pointers.py │ ├── binary-search-recursive.py │ ├── sequential-search-ordered-list.py │ └── sequential-search-unordered-list.py ├── sorting/ │ ├── bubble-sort.py │ ├── insertion-sort.py │ ├── merge-sort.py │ ├── quicksort-return-new-array.py │ ├── quicksort.py │ ├── selection-sort.py │ └── short-bubble.py ├── stack/ │ ├── examples/ │ │ ├── balanced-brackets.py │ │ ├── number_converter.py │ │ └── stack.py │ ├── stack-array-impl-less-efficient.py │ ├── stack-array-impl.py │ ├── stack-fixed-size-array-impl.py │ ├── stack-linked-list-impl.py │ └── stack_two_queues.py ├── stack_two_queues.py ├── substring-search/ │ └── brute_force.py ├── trees/ │ ├── avl-tree.py │ ├── binary-heap.py │ ├── binary-search-tree.py │ ├── class-representation.py │ ├── list-representation.py │ ├── parse-tree.py │ ├── stack.py │ └── tree-traversal/ │ ├── functions.py │ ├── inorder-traversal-example.py │ ├── postorder-traversal-example.py │ ├── preorder-traversal-example.py │ ├── stack.py │ └── treenode.py └── trie/ └── trie.py