gitextract_z9vtg38d/ ├── .gitignore ├── .vscode/ │ └── settings.json ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── algorithms/ │ ├── EuclideanAlgorithm/ │ │ ├── c/ │ │ │ └── euclid.c │ │ └── python/ │ │ └── euclideanAlgorithm.py │ ├── Graph/ │ │ └── connected_components_in_undirected_graph/ │ │ └── python/ │ │ └── ConnectedComponents.py │ ├── a_search/ │ │ └── cpp/ │ │ └── a_star.cpp │ ├── backtracking/ │ │ └── c/ │ │ ├── n_queens_problem.c │ │ ├── rat_in_a_maze_problem.c │ │ ├── sudoku_problem.c │ │ └── the_knight_tour_problem.c │ ├── bellman_ford/ │ │ ├── cpp/ │ │ │ └── bellman_ford.cpp │ │ └── java/ │ │ └── BellmanFord.java │ ├── bfs/ │ │ ├── cpp/ │ │ │ └── bfs.cpp │ │ └── java/ │ │ └── Graph.java │ ├── binary_search/ │ │ ├── PHP/ │ │ │ └── binarysearch.php │ │ ├── binary_search.md │ │ ├── c/ │ │ │ └── binary_search.c │ │ ├── cpp/ │ │ │ └── binary_search.cpp │ │ ├── java/ │ │ │ └── binarysearch.java │ │ ├── javascript/ │ │ │ └── binary_search.js │ │ ├── python/ │ │ │ └── binary_search.py │ │ └── ruby/ │ │ └── binary_search.rb │ ├── bipartite_check/ │ │ └── cpp/ │ │ └── bipartite.cpp │ ├── bitwise/ │ │ ├── cpp/ │ │ │ └── generating_subsets.cpp │ │ └── java/ │ │ ├── AddTwoNumbersWithoutPlusOperator.java │ │ ├── BinaryPalidrome.java │ │ ├── NegateANumberWithoutPlusOperator.java │ │ ├── Optimized_permutation │ │ └── Subsets.java │ ├── bogo_sort/ │ │ ├── java/ │ │ │ └── BogoSort.java │ │ ├── python/ │ │ │ └── bogo.py │ │ └── ruby/ │ │ └── bogo_sort.rb │ ├── breadth_first_search/ │ │ └── cpp/ │ │ └── bfs.cpp │ ├── bubble_sort/ │ │ ├── README.md │ │ ├── assembly_mips/ │ │ │ └── bubble_sort.asm │ │ ├── bash/ │ │ │ └── bubblesort.sh │ │ ├── c/ │ │ │ └── bubble_sort.c │ │ ├── cpp/ │ │ │ ├── bubble_sort_1.cpp │ │ │ └── bubblesort.cpp │ │ ├── crystal/ │ │ │ └── bubble_sort.cr │ │ ├── csharp/ │ │ │ └── BubbleSort.cs │ │ ├── elixir/ │ │ │ ├── README.md │ │ │ └── bubblesort.ex │ │ ├── go/ │ │ │ └── bubble-sort-algorithm.go │ │ ├── haskell/ │ │ │ └── bubble_sort.hs │ │ ├── java/ │ │ │ ├── BubbleSortExample.java │ │ │ └── GenericBubbleSort.java │ │ ├── javascript/ │ │ │ ├── bubble-sort.js │ │ │ ├── bubbleSort.js │ │ │ └── main_bs.js │ │ ├── kotlin/ │ │ │ └── bubblesort.kt │ │ ├── objetive-c/ │ │ │ └── BubbleSort.m │ │ ├── perl/ │ │ │ └── BubbleSort.pl │ │ ├── power_shell/ │ │ │ └── bubble_sort.ps1 │ │ ├── python/ │ │ │ └── bubble_sort.py │ │ ├── ruby/ │ │ │ └── bubble_sort.rb │ │ ├── swift/ │ │ │ └── bubble_sort.swift │ │ └── vb/ │ │ └── bubble_sort.bas │ ├── bucket_sort/ │ │ ├── bucket_sort.cpp │ │ ├── bucket_sort.java │ │ ├── bucket_sort.py │ │ └── c/ │ │ └── bucket_sort.c │ ├── caesar_cipher/ │ │ ├── java/ │ │ │ └── caesar.java │ │ └── javascript/ │ │ └── caesarCipher.js │ ├── check_pallindrome_number/ │ │ ├── c/ │ │ │ └── checkPalindrome.c │ │ └── cpp/ │ │ └── checkPall.cpp │ ├── closest/ │ │ └── java/ │ │ └── Closest.java │ ├── count_sort/ │ │ └── javascript/ │ │ └── count_sort.js │ ├── cycle_sort/ │ │ └── java/ │ │ └── cycleSort.java │ ├── decoding/ │ │ └── c/ │ │ └── base64_decoder.c │ ├── dfs/ │ │ ├── cpp/ │ │ │ └── dfs.cpp │ │ ├── java/ │ │ │ └── Graph.java │ │ └── python/ │ │ └── Dfs.py │ ├── dijkstra/ │ │ ├── cpp/ │ │ │ └── Dijkstras.cpp │ │ ├── java/ │ │ │ └── ShortestPath.java │ │ └── python/ │ │ └── djikstra.py │ ├── doomsday/ │ │ ├── java/ │ │ │ └── doomsday.java │ │ └── javascript/ │ │ └── doomsday.js │ ├── dynamic_programming/ │ │ ├── c/ │ │ │ ├── 0_1_knapsack_problem.c │ │ │ ├── Coin_change_DP.c │ │ │ ├── coinChange.c │ │ │ ├── count_no_of_ways_to_reach_nth_stair.c │ │ │ ├── longestIncreasingSubsequence.c │ │ │ ├── longestRepeatedSequence.c │ │ │ ├── longest_pallindrome_sequence.c │ │ │ ├── maxSumIncSequence.c │ │ │ └── subsetSum.c │ │ ├── cpp/ │ │ │ ├── kadens.cpp │ │ │ ├── nCr.cpp │ │ │ └── subset_sum.cpp │ │ └── java/ │ │ └── MinCostPath.java │ ├── encoding/ │ │ └── base64_encoder.c │ ├── fibonacci/ │ │ └── cpp/ │ │ └── constexpr-fibonacci.cpp │ ├── floyd_warshall/ │ │ └── java/ │ │ └── ShortestPath.java │ ├── greedy_search/ │ │ └── cpp/ │ │ └── prims_algorithm.cpp │ ├── heap_sort/ │ │ ├── crystal/ │ │ │ └── heap_sort.cr │ │ ├── java/ │ │ │ ├── heap_sort.java │ │ │ └── heapsort.java │ │ ├── javascript/ │ │ │ └── heap_sort.js │ │ └── python/ │ │ └── heap_sort.py │ ├── histogram_equalization/ │ │ └── java/ │ │ └── HistogramEqualization.java │ ├── huffmann_algorithm/ │ │ └── java/ │ │ └── Huffman.java │ ├── insertion_sort/ │ │ ├── ada/ │ │ │ └── insertion_sort.adb │ │ ├── c/ │ │ │ └── InsertionSort.c │ │ ├── cpp/ │ │ │ └── insertion_sort.cpp │ │ ├── crystal/ │ │ │ └── insertion_sort.cr │ │ ├── java/ │ │ │ └── InsertionSort.java │ │ ├── javascript/ │ │ │ ├── insertionSort.js │ │ │ └── insertion_sort.js │ │ ├── python/ │ │ │ └── insertionsort.py3 │ │ └── ruby/ │ │ └── insertion_sort.rb │ ├── inversion_count/ │ │ └── cpp/ │ │ └── inversion_count.cpp │ ├── jarvis/ │ │ └── cpp/ │ │ └── jarvis.cpp │ ├── johnson_algorithm/ │ │ └── cpp/ │ │ └── johnson_algorithm.cpp │ ├── kmp_search/ │ │ ├── cpp/ │ │ │ └── KMPSearch.cpp │ │ ├── java/ │ │ │ └── KMPSearch.java │ │ └── python/ │ │ └── KMPSearch.py │ ├── linear_search/ │ │ ├── c/ │ │ │ └── linearsearch.C │ │ ├── cpp/ │ │ │ └── linearSearch.cpp │ │ ├── java/ │ │ │ └── LinearSearch.java │ │ ├── javascript/ │ │ │ └── linear_search.js │ │ └── python/ │ │ └── linear_search.py │ ├── longest_common_subsequence/ │ │ ├── cpp/ │ │ │ └── LongestCommonSubsequence.cpp │ │ ├── javaj/ │ │ │ └── LCS.java │ │ ├── javascript/ │ │ │ └── longest_common_subsequence.js │ │ └── python/ │ │ └── LCS.py │ ├── longest_common_substring/ │ │ └── java/ │ │ └── LongestCommonSubString.java │ ├── matrix_chain_multiplication/ │ │ ├── cpp/ │ │ │ └── MCM.cpp │ │ ├── java/ │ │ │ └── MCM.java │ │ └── python/ │ │ └── MCM.py │ ├── merge_sort/ │ │ ├── c#/ │ │ │ └── MergeSort.cs │ │ ├── cpp/ │ │ │ └── merge_sort.cpp │ │ ├── haskell/ │ │ │ └── merge_sort.hs │ │ ├── java/ │ │ │ └── merge_sort.java │ │ ├── javascript/ │ │ │ └── MergeSort.js │ │ ├── python/ │ │ │ └── merge_sort.py │ │ └── ruby/ │ │ └── merge_sort.rb │ ├── minimum_spanning_tree/ │ │ └── cpp/ │ │ └── MST.cpp │ ├── optimal_binary_search_tree/ │ │ └── java/ │ │ └── OptimalBst.java │ ├── parse_tree/ │ │ └── python/ │ │ └── parse_tree.py │ ├── permutations/ │ │ ├── java/ │ │ │ └── Permutation.java │ │ └── javascript/ │ │ └── permutations.js │ ├── quick_sort/ │ │ ├── ada/ │ │ │ └── quick_sort.adb │ │ ├── c/ │ │ │ └── quick_sort.c │ │ ├── cpp/ │ │ │ └── quickSort.cpp │ │ ├── csharp/ │ │ │ ├── QuickSort.cs │ │ │ └── quicksort.cs │ │ ├── haskell/ │ │ │ └── quicksort.hs │ │ ├── java/ │ │ │ └── QuickSort.java │ │ ├── javascript/ │ │ │ └── quick_sort.js │ │ ├── kotlin/ │ │ │ └── quicksort.kt │ │ ├── python/ │ │ │ └── quicksort.py │ │ └── ruby/ │ │ └── quick_sort.rb │ ├── rabin_karp/ │ │ └── java/ │ │ └── RabinKarp.java │ ├── radixsort/ │ │ ├── c++/ │ │ │ └── radixsort.cpp │ │ └── python/ │ │ └── lsd_radixsort.py │ ├── selection_sort/ │ │ ├── c/ │ │ │ └── SelectionSort.c │ │ ├── crystal/ │ │ │ └── selection_sort.cr │ │ ├── java/ │ │ │ └── SelectionSort.java │ │ ├── javascript/ │ │ │ └── selection_sort.js │ │ ├── python/ │ │ │ └── selection_sort.py │ │ └── ruby/ │ │ └── selection_sort.rb │ ├── shell_sort/ │ │ ├── C/ │ │ │ └── ShellSort.c │ │ ├── C++/ │ │ │ └── ShellSort.cpp │ │ ├── Java/ │ │ │ └── ShellSort.java │ │ └── python/ │ │ └── shellsort.py │ ├── sieve_of_eratosthenes/ │ │ ├── cpp/ │ │ │ └── sieve_of_eratosthenes.cpp │ │ ├── java/ │ │ │ └── sieve.java │ │ ├── javascript/ │ │ │ └── sieve.js │ │ └── python/ │ │ └── sieve.py │ ├── sort/ │ │ └── heap_sort/ │ │ └── java/ │ │ └── heap_sort.java │ ├── strings/ │ │ └── cpp/ │ │ └── anagrams.cpp │ └── tower_of_hanoi/ │ ├── cpp/ │ │ └── tower_of_hanoi.cpp │ ├── java/ │ │ └── towers_of_hanoi.java │ ├── javascript/ │ │ └── tower_of_hanoi.js │ ├── php/ │ │ └── towers_of_hanoi.php │ └── python/ │ └── tower_of_hanoi.py ├── data_structures/ │ ├── arraylist/ │ │ └── java/ │ │ └── arraylist.java │ ├── avl_tree/ │ │ ├── java/ │ │ │ └── AVL.java │ │ └── javascript/ │ │ └── avl.js │ ├── bag/ │ │ └── java/ │ │ └── Bag.java │ ├── binary_search_tree/ │ │ ├── binary_search_tree.md │ │ ├── c/ │ │ │ └── BSTtraversal.c │ │ ├── cpp/ │ │ │ └── BST.h │ │ ├── java/ │ │ │ ├── binary_search_tree.java │ │ │ └── bst_operations/ │ │ │ ├── CheckBST.java │ │ │ ├── CorrectBST.java │ │ │ ├── FindAncestor.java │ │ │ ├── InorderSuccessor.java │ │ │ ├── LargestBST.java │ │ │ ├── LevelOrder.java │ │ │ ├── MorrisTraversal.java │ │ │ ├── Node.java │ │ │ └── PathFromRootToNode.java │ │ ├── javascript/ │ │ │ ├── binary_tree.js │ │ │ ├── binary_tree_search.js │ │ │ ├── breadth_first_search.js │ │ │ └── depth_first_search.js │ │ └── python/ │ │ ├── bst.py │ │ ├── bst1.py │ │ └── bst2.py │ ├── binary_tree/ │ │ ├── c/ │ │ │ └── diameterBT.c │ │ ├── cpp/ │ │ │ ├── binary_tree.cpp │ │ │ └── boundaryTraversal.cpp │ │ ├── csharp/ │ │ │ └── BinaryTree.cs │ │ ├── java/ │ │ │ ├── binary_tree_bfs.java │ │ │ └── binary_tree_dfs.java │ │ └── python/ │ │ └── binary_tree.py │ ├── bloom_filter/ │ │ └── python/ │ │ └── bloom_filter.py │ ├── circular_queue/ │ │ ├── circular_queue.md │ │ ├── cpp/ │ │ │ └── circular queue.cpp │ │ ├── java/ │ │ │ └── circular_queue.java │ │ └── python/ │ │ └── circular_queue.py │ ├── d_heap/ │ │ └── c/ │ │ └── d_heap.c │ ├── dimaeter_of_a_tree/ │ │ ├── cpp/ │ │ │ └── Diameter.cpp │ │ ├── diameter_of_a_tree.md │ │ └── java/ │ │ └── Diameter.java │ ├── double_linked_list/ │ │ └── cpp/ │ │ └── doublelinkedlist.cpp │ ├── doubly_linked_list/ │ │ ├── java/ │ │ │ └── DoublyLinkedList.java │ │ └── python/ │ │ └── DoublyLinkedList.py │ ├── generic_tree/ │ │ └── java/ │ │ └── gt.java │ ├── graph/ │ │ ├── cpp/ │ │ │ └── graph.cpp │ │ └── python/ │ │ └── graph.py │ ├── hash_table/ │ │ ├── cpp/ │ │ │ └── hashtable.h │ │ ├── csharp/ │ │ │ └── hash_table.cs │ │ ├── java/ │ │ │ └── Hash_table.java │ │ └── python/ │ │ └── hashTable.py │ ├── hashmap/ │ │ └── java/ │ │ └── hashmap.java │ ├── hashset/ │ │ └── java/ │ │ └── hashset.java │ ├── heap/ │ │ ├── cpp/ │ │ │ └── MinHeap.h │ │ ├── java/ │ │ │ ├── Heap.java │ │ │ └── heaps.java │ │ ├── python/ │ │ │ └── minheap.py │ │ └── ruby/ │ │ └── heap.rb │ ├── heapify_insert_extract_min/ │ │ └── cpp/ │ │ └── max-heap_functions.cpp │ ├── left_learning_red_black_tree/ │ │ ├── c/ │ │ │ └── llrb_tree.c │ │ └── java/ │ │ └── left_leaning_red_black_tree.java │ ├── linked_list/ │ │ ├── c/ │ │ │ └── linked_list.c │ │ ├── cpp/ │ │ │ ├── LinkedList.cpp │ │ │ └── singly_linked_list.cpp │ │ ├── csharp/ │ │ │ └── LinkedList.cs │ │ ├── go/ │ │ │ └── linked_list.go │ │ ├── java/ │ │ │ ├── LinkedList.java │ │ │ ├── LinkedListLinkedList.java │ │ │ └── LinkedListTest.java │ │ ├── kotlin/ │ │ │ └── LinkedList.kt │ │ ├── linked_list.md │ │ ├── python/ │ │ │ └── linked_list.py │ │ └── ruby/ │ │ └── linked_list.rb │ ├── linked_list_queue/ │ │ └── cpp/ │ │ └── queue_linked_list.cpp │ ├── min_heap/ │ │ └── cpp/ │ │ ├── impl_minHeap.cpp │ │ ├── minHeap.cpp │ │ └── minHeap.hpp │ ├── mirror_of_a_tree.java/ │ │ └── java/ │ │ └── Mirror.java │ ├── mirrot_of_a_tree.cpp/ │ │ └── mirror.cpp │ ├── mst/ │ │ ├── cpp/ │ │ │ └── mst.cpp │ │ └── java/ │ │ └── prims.java │ ├── priority_queue/ │ │ └── c/ │ │ └── priority_queue.cpp │ ├── queue/ │ │ ├── c/ │ │ │ └── queue.c │ │ ├── cpp/ │ │ │ ├── Queue.cpp │ │ │ └── Queue.h │ │ ├── csharp/ │ │ │ └── Queue.cs │ │ ├── go/ │ │ │ └── queue.go │ │ ├── java/ │ │ │ └── IterableQueue.java │ │ ├── javascript/ │ │ │ ├── queue_ES5.js │ │ │ └── queue_ES6.js │ │ ├── kotlin/ │ │ │ └── IterableQueue.kt │ │ ├── php/ │ │ │ └── queue.php │ │ ├── python/ │ │ │ └── queue_two_stacks.py │ │ └── ruby/ │ │ └── queue.rb │ ├── simple_queue/ │ │ ├── java/ │ │ │ ├── QueueImplementation.java │ │ │ ├── arrayQueue.java │ │ │ └── queue.java │ │ ├── python/ │ │ │ └── queue.py │ │ └── simple_queue.md │ ├── stack/ │ │ ├── c/ │ │ │ └── stack1.c │ │ ├── c#/ │ │ │ ├── main.cs │ │ │ └── stack.cs │ │ ├── cpp/ │ │ │ ├── celement.h │ │ │ ├── cstack.cpp │ │ │ ├── cstack.h │ │ │ ├── cstack.test.cpp │ │ │ ├── stack_balanced_paranthesis.cpp │ │ │ ├── templated_stack.cpp │ │ │ └── templated_stack.hpp │ │ ├── crystal/ │ │ │ └── stack.cr │ │ ├── csharp/ │ │ │ └── Stack.cs │ │ ├── go/ │ │ │ └── stack.go │ │ ├── java/ │ │ │ ├── Node.java │ │ │ ├── Stack.java │ │ │ └── integer_stack.java │ │ ├── javascript/ │ │ │ ├── stack.js │ │ │ └── usingstack.js │ │ ├── lisp/ │ │ │ ├── Stack.bak │ │ │ └── Stack.rkt │ │ ├── php/ │ │ │ └── stack.php │ │ ├── python/ │ │ │ └── stack.py │ │ └── ruby/ │ │ └── stack.rb │ ├── treemap/ │ │ └── java/ │ │ └── treemap.java │ ├── treeset/ │ │ └── java/ │ │ └── treeset.java │ ├── trie/ │ │ ├── Trie.md │ │ ├── java/ │ │ │ └── Trie.java │ │ └── javascript/ │ │ └── Trie.js │ └── union_find/ │ ├── cpp/ │ │ └── UnionFind.cpp │ ├── java/ │ │ └── UnionFind.java │ ├── python/ │ │ └── UnionFind.py │ └── union_find.md ├── design_patterns/ │ └── behavioral/ │ └── javascript/ │ ├── mediator-example.js │ └── mediator.js └── package.json