gitextract_4c8t4fps/ ├── .gitattributes ├── .github/ │ ├── pull_request_template.md │ └── workflows/ │ ├── c.yml │ ├── cpp.yml │ ├── dart.yml │ ├── dotnet.yml │ ├── go.yml │ ├── java.yml │ ├── javascript.yml │ ├── kotlin.yml │ ├── python.yml │ ├── ruby.yml │ ├── rust.yml │ ├── swift.yml │ └── typescript.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── README.md ├── codes/ │ ├── Dockerfile │ ├── c/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array.c │ │ │ ├── linked_list.c │ │ │ └── my_list.c │ │ ├── chapter_backtracking/ │ │ │ ├── CMakeLists.txt │ │ │ ├── n_queens.c │ │ │ ├── permutations_i.c │ │ │ ├── permutations_ii.c │ │ │ ├── preorder_traversal_i_compact.c │ │ │ ├── preorder_traversal_ii_compact.c │ │ │ ├── preorder_traversal_iii_compact.c │ │ │ ├── preorder_traversal_iii_template.c │ │ │ ├── subset_sum_i.c │ │ │ ├── subset_sum_i_naive.c │ │ │ └── subset_sum_ii.c │ │ ├── chapter_computational_complexity/ │ │ │ ├── CMakeLists.txt │ │ │ ├── iteration.c │ │ │ ├── recursion.c │ │ │ ├── space_complexity.c │ │ │ ├── time_complexity.c │ │ │ └── worst_best_time_complexity.c │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search_recur.c │ │ │ ├── build_tree.c │ │ │ └── hanota.c │ │ ├── chapter_dynamic_programming/ │ │ │ ├── CMakeLists.txt │ │ │ ├── climbing_stairs_backtrack.c │ │ │ ├── climbing_stairs_constraint_dp.c │ │ │ ├── climbing_stairs_dfs.c │ │ │ ├── climbing_stairs_dfs_mem.c │ │ │ ├── climbing_stairs_dp.c │ │ │ ├── coin_change.c │ │ │ ├── coin_change_ii.c │ │ │ ├── edit_distance.c │ │ │ ├── knapsack.c │ │ │ ├── min_cost_climbing_stairs_dp.c │ │ │ ├── min_path_sum.c │ │ │ └── unbounded_knapsack.c │ │ ├── chapter_graph/ │ │ │ ├── CMakeLists.txt │ │ │ ├── graph_adjacency_list.c │ │ │ ├── graph_adjacency_list_test.c │ │ │ ├── graph_adjacency_matrix.c │ │ │ ├── graph_bfs.c │ │ │ └── graph_dfs.c │ │ ├── chapter_greedy/ │ │ │ ├── CMakeLists.txt │ │ │ ├── coin_change_greedy.c │ │ │ ├── fractional_knapsack.c │ │ │ ├── max_capacity.c │ │ │ └── max_product_cutting.c │ │ ├── chapter_hashing/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_hash_map.c │ │ │ ├── hash_map_chaining.c │ │ │ ├── hash_map_open_addressing.c │ │ │ └── simple_hash.c │ │ ├── chapter_heap/ │ │ │ ├── CMakeLists.txt │ │ │ ├── my_heap.c │ │ │ ├── my_heap_test.c │ │ │ └── top_k.c │ │ ├── chapter_searching/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search.c │ │ │ ├── binary_search_edge.c │ │ │ ├── binary_search_insertion.c │ │ │ └── two_sum.c │ │ ├── chapter_sorting/ │ │ │ ├── CMakeLists.txt │ │ │ ├── bubble_sort.c │ │ │ ├── bucket_sort.c │ │ │ ├── counting_sort.c │ │ │ ├── heap_sort.c │ │ │ ├── insertion_sort.c │ │ │ ├── merge_sort.c │ │ │ ├── quick_sort.c │ │ │ ├── radix_sort.c │ │ │ └── selection_sort.c │ │ ├── chapter_stack_and_queue/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_deque.c │ │ │ ├── array_queue.c │ │ │ ├── array_stack.c │ │ │ ├── linkedlist_deque.c │ │ │ ├── linkedlist_queue.c │ │ │ └── linkedlist_stack.c │ │ ├── chapter_tree/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_binary_tree.c │ │ │ ├── avl_tree.c │ │ │ ├── binary_search_tree.c │ │ │ ├── binary_tree.c │ │ │ ├── binary_tree_bfs.c │ │ │ └── binary_tree_dfs.c │ │ └── utils/ │ │ ├── CMakeLists.txt │ │ ├── common.h │ │ ├── common_test.c │ │ ├── list_node.h │ │ ├── print_util.h │ │ ├── tree_node.h │ │ ├── uthash.h │ │ ├── vector.h │ │ └── vertex.h │ ├── cpp/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array.cpp │ │ │ ├── linked_list.cpp │ │ │ ├── list.cpp │ │ │ └── my_list.cpp │ │ ├── chapter_backtracking/ │ │ │ ├── CMakeLists.txt │ │ │ ├── n_queens.cpp │ │ │ ├── permutations_i.cpp │ │ │ ├── permutations_ii.cpp │ │ │ ├── preorder_traversal_i_compact.cpp │ │ │ ├── preorder_traversal_ii_compact.cpp │ │ │ ├── preorder_traversal_iii_compact.cpp │ │ │ ├── preorder_traversal_iii_template.cpp │ │ │ ├── subset_sum_i.cpp │ │ │ ├── subset_sum_i_naive.cpp │ │ │ └── subset_sum_ii.cpp │ │ ├── chapter_computational_complexity/ │ │ │ ├── CMakeLists.txt │ │ │ ├── iteration.cpp │ │ │ ├── recursion.cpp │ │ │ ├── space_complexity.cpp │ │ │ ├── time_complexity.cpp │ │ │ └── worst_best_time_complexity.cpp │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search_recur.cpp │ │ │ ├── build_tree.cpp │ │ │ └── hanota.cpp │ │ ├── chapter_dynamic_programming/ │ │ │ ├── CMakeLists.txt │ │ │ ├── climbing_stairs_backtrack.cpp │ │ │ ├── climbing_stairs_constraint_dp.cpp │ │ │ ├── climbing_stairs_dfs.cpp │ │ │ ├── climbing_stairs_dfs_mem.cpp │ │ │ ├── climbing_stairs_dp.cpp │ │ │ ├── coin_change.cpp │ │ │ ├── coin_change_ii.cpp │ │ │ ├── edit_distance.cpp │ │ │ ├── knapsack.cpp │ │ │ ├── min_cost_climbing_stairs_dp.cpp │ │ │ ├── min_path_sum.cpp │ │ │ └── unbounded_knapsack.cpp │ │ ├── chapter_graph/ │ │ │ ├── CMakeLists.txt │ │ │ ├── graph_adjacency_list.cpp │ │ │ ├── graph_adjacency_list_test.cpp │ │ │ ├── graph_adjacency_matrix.cpp │ │ │ ├── graph_bfs.cpp │ │ │ └── graph_dfs.cpp │ │ ├── chapter_greedy/ │ │ │ ├── CMakeLists.txt │ │ │ ├── coin_change_greedy.cpp │ │ │ ├── fractional_knapsack.cpp │ │ │ ├── max_capacity.cpp │ │ │ └── max_product_cutting.cpp │ │ ├── chapter_hashing/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_hash_map.cpp │ │ │ ├── array_hash_map_test.cpp │ │ │ ├── built_in_hash.cpp │ │ │ ├── hash_map.cpp │ │ │ ├── hash_map_chaining.cpp │ │ │ ├── hash_map_open_addressing.cpp │ │ │ └── simple_hash.cpp │ │ ├── chapter_heap/ │ │ │ ├── CMakeLists.txt │ │ │ ├── heap.cpp │ │ │ ├── my_heap.cpp │ │ │ └── top_k.cpp │ │ ├── chapter_searching/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search.cpp │ │ │ ├── binary_search_edge.cpp │ │ │ ├── binary_search_insertion.cpp │ │ │ ├── hashing_search.cpp │ │ │ ├── linear_search.cpp │ │ │ └── two_sum.cpp │ │ ├── chapter_sorting/ │ │ │ ├── CMakeLists.txt │ │ │ ├── bubble_sort.cpp │ │ │ ├── bucket_sort.cpp │ │ │ ├── counting_sort.cpp │ │ │ ├── heap_sort.cpp │ │ │ ├── insertion_sort.cpp │ │ │ ├── merge_sort.cpp │ │ │ ├── quick_sort.cpp │ │ │ ├── radix_sort.cpp │ │ │ └── selection_sort.cpp │ │ ├── chapter_stack_and_queue/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_deque.cpp │ │ │ ├── array_queue.cpp │ │ │ ├── array_stack.cpp │ │ │ ├── deque.cpp │ │ │ ├── linkedlist_deque.cpp │ │ │ ├── linkedlist_queue.cpp │ │ │ ├── linkedlist_stack.cpp │ │ │ ├── queue.cpp │ │ │ └── stack.cpp │ │ ├── chapter_tree/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_binary_tree.cpp │ │ │ ├── avl_tree.cpp │ │ │ ├── binary_search_tree.cpp │ │ │ ├── binary_tree.cpp │ │ │ ├── binary_tree_bfs.cpp │ │ │ └── binary_tree_dfs.cpp │ │ └── utils/ │ │ ├── CMakeLists.txt │ │ ├── common.hpp │ │ ├── list_node.hpp │ │ ├── print_utils.hpp │ │ ├── tree_node.hpp │ │ └── vertex.hpp │ ├── csharp/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── GlobalUsing.cs │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.cs │ │ │ ├── linked_list.cs │ │ │ ├── list.cs │ │ │ └── my_list.cs │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.cs │ │ │ ├── permutations_i.cs │ │ │ ├── permutations_ii.cs │ │ │ ├── preorder_traversal_i_compact.cs │ │ │ ├── preorder_traversal_ii_compact.cs │ │ │ ├── preorder_traversal_iii_compact.cs │ │ │ ├── preorder_traversal_iii_template.cs │ │ │ ├── subset_sum_i.cs │ │ │ ├── subset_sum_i_naive.cs │ │ │ └── subset_sum_ii.cs │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.cs │ │ │ ├── recursion.cs │ │ │ ├── space_complexity.cs │ │ │ ├── time_complexity.cs │ │ │ └── worst_best_time_complexity.cs │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.cs │ │ │ ├── build_tree.cs │ │ │ └── hanota.cs │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.cs │ │ │ ├── climbing_stairs_constraint_dp.cs │ │ │ ├── climbing_stairs_dfs.cs │ │ │ ├── climbing_stairs_dfs_mem.cs │ │ │ ├── climbing_stairs_dp.cs │ │ │ ├── coin_change.cs │ │ │ ├── coin_change_ii.cs │ │ │ ├── edit_distance.cs │ │ │ ├── knapsack.cs │ │ │ ├── min_cost_climbing_stairs_dp.cs │ │ │ ├── min_path_sum.cs │ │ │ └── unbounded_knapsack.cs │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.cs │ │ │ ├── graph_adjacency_matrix.cs │ │ │ ├── graph_bfs.cs │ │ │ └── graph_dfs.cs │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.cs │ │ │ ├── fractional_knapsack.cs │ │ │ ├── max_capacity.cs │ │ │ └── max_product_cutting.cs │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.cs │ │ │ ├── built_in_hash.cs │ │ │ ├── hash_map.cs │ │ │ ├── hash_map_chaining.cs │ │ │ ├── hash_map_open_addressing.cs │ │ │ └── simple_hash.cs │ │ ├── chapter_heap/ │ │ │ ├── heap.cs │ │ │ ├── my_heap.cs │ │ │ └── top_k.cs │ │ ├── chapter_searching/ │ │ │ ├── binary_search.cs │ │ │ ├── binary_search_edge.cs │ │ │ ├── binary_search_insertion.cs │ │ │ ├── hashing_search.cs │ │ │ ├── linear_search.cs │ │ │ └── two_sum.cs │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.cs │ │ │ ├── bucket_sort.cs │ │ │ ├── counting_sort.cs │ │ │ ├── heap_sort.cs │ │ │ ├── insertion_sort.cs │ │ │ ├── merge_sort.cs │ │ │ ├── quick_sort.cs │ │ │ ├── radix_sort.cs │ │ │ └── selection_sort.cs │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.cs │ │ │ ├── array_queue.cs │ │ │ ├── array_stack.cs │ │ │ ├── deque.cs │ │ │ ├── linkedlist_deque.cs │ │ │ ├── linkedlist_queue.cs │ │ │ ├── linkedlist_stack.cs │ │ │ ├── queue.cs │ │ │ └── stack.cs │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.cs │ │ │ ├── avl_tree.cs │ │ │ ├── binary_search_tree.cs │ │ │ ├── binary_tree.cs │ │ │ ├── binary_tree_bfs.cs │ │ │ └── binary_tree_dfs.cs │ │ ├── csharp.sln │ │ ├── hello-algo.csproj │ │ └── utils/ │ │ ├── ListNode.cs │ │ ├── PrintUtil.cs │ │ ├── TreeNode.cs │ │ └── Vertex.cs │ ├── dart/ │ │ ├── build.dart │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.dart │ │ │ ├── linked_list.dart │ │ │ ├── list.dart │ │ │ └── my_list.dart │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.dart │ │ │ ├── permutations_i.dart │ │ │ ├── permutations_ii.dart │ │ │ ├── preorder_traversal_i_compact.dart │ │ │ ├── preorder_traversal_ii_compact.dart │ │ │ ├── preorder_traversal_iii_compact.dart │ │ │ ├── preorder_traversal_iii_template.dart │ │ │ ├── subset_sum_i.dart │ │ │ ├── subset_sum_i_naive.dart │ │ │ └── subset_sum_ii.dart │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.dart │ │ │ ├── recursion.dart │ │ │ ├── space_complexity.dart │ │ │ ├── time_complexity.dart │ │ │ └── worst_best_time_complexity.dart │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.dart │ │ │ ├── build_tree.dart │ │ │ └── hanota.dart │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.dart │ │ │ ├── climbing_stairs_constraint_dp.dart │ │ │ ├── climbing_stairs_dfs.dart │ │ │ ├── climbing_stairs_dfs_mem.dart │ │ │ ├── climbing_stairs_dp.dart │ │ │ ├── coin_change.dart │ │ │ ├── coin_change_ii.dart │ │ │ ├── edit_distance.dart │ │ │ ├── knapsack.dart │ │ │ ├── min_cost_climbing_stairs_dp.dart │ │ │ ├── min_path_sum.dart │ │ │ └── unbounded_knapsack.dart │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.dart │ │ │ ├── graph_adjacency_matrix.dart │ │ │ ├── graph_bfs.dart │ │ │ └── graph_dfs.dart │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.dart │ │ │ ├── fractional_knapsack.dart │ │ │ ├── max_capacity.dart │ │ │ └── max_product_cutting.dart │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.dart │ │ │ ├── built_in_hash.dart │ │ │ ├── hash_map.dart │ │ │ ├── hash_map_chaining.dart │ │ │ ├── hash_map_open_addressing.dart │ │ │ └── simple_hash.dart │ │ ├── chapter_heap/ │ │ │ ├── my_heap.dart │ │ │ └── top_k.dart │ │ ├── chapter_searching/ │ │ │ ├── binary_search.dart │ │ │ ├── binary_search_edge.dart │ │ │ ├── binary_search_insertion.dart │ │ │ ├── hashing_search.dart │ │ │ ├── linear_search.dart │ │ │ └── two_sum.dart │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.dart │ │ │ ├── bucket_sort.dart │ │ │ ├── counting_sort.dart │ │ │ ├── heap_sort.dart │ │ │ ├── insertion_sort.dart │ │ │ ├── merge_sort.dart │ │ │ ├── quick_sort.dart │ │ │ ├── radix_sort.dart │ │ │ └── selection_sort.dart │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.dart │ │ │ ├── array_queue.dart │ │ │ ├── array_stack.dart │ │ │ ├── deque.dart │ │ │ ├── linkedlist_deque.dart │ │ │ ├── linkedlist_queue.dart │ │ │ ├── linkedlist_stack.dart │ │ │ ├── queue.dart │ │ │ └── stack.dart │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.dart │ │ │ ├── avl_tree.dart │ │ │ ├── binary_search_tree.dart │ │ │ ├── binary_tree.dart │ │ │ ├── binary_tree_bfs.dart │ │ │ └── binary_tree_dfs.dart │ │ └── utils/ │ │ ├── list_node.dart │ │ ├── print_util.dart │ │ ├── tree_node.dart │ │ └── vertex.dart │ ├── docker-compose.yml │ ├── go/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.go │ │ │ ├── array_test.go │ │ │ ├── linked_list.go │ │ │ ├── linked_list_test.go │ │ │ ├── list_test.go │ │ │ ├── my_list.go │ │ │ └── my_list_test.go │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.go │ │ │ ├── n_queens_test.go │ │ │ ├── permutation_test.go │ │ │ ├── permutations_i.go │ │ │ ├── permutations_ii.go │ │ │ ├── preorder_traversal_i_compact.go │ │ │ ├── preorder_traversal_ii_compact.go │ │ │ ├── preorder_traversal_iii_compact.go │ │ │ ├── preorder_traversal_iii_template.go │ │ │ ├── preorder_traversal_test.go │ │ │ ├── subset_sum_i.go │ │ │ ├── subset_sum_i_naive.go │ │ │ ├── subset_sum_ii.go │ │ │ └── subset_sum_test.go │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.go │ │ │ ├── iteration_test.go │ │ │ ├── recursion.go │ │ │ ├── recursion_test.go │ │ │ ├── space_complexity.go │ │ │ ├── space_complexity_test.go │ │ │ ├── time_complexity.go │ │ │ ├── time_complexity_test.go │ │ │ ├── worst_best_time_complexity.go │ │ │ └── worst_best_time_complexity_test.go │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.go │ │ │ ├── binary_search_recur_test.go │ │ │ ├── build_tree.go │ │ │ ├── build_tree_test.go │ │ │ ├── hanota.go │ │ │ └── hanota_test.go │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.go │ │ │ ├── climbing_stairs_constraint_dp.go │ │ │ ├── climbing_stairs_dfs.go │ │ │ ├── climbing_stairs_dfs_mem.go │ │ │ ├── climbing_stairs_dp.go │ │ │ ├── climbing_stairs_test.go │ │ │ ├── coin_change.go │ │ │ ├── coin_change_ii.go │ │ │ ├── coin_change_test.go │ │ │ ├── edit_distance.go │ │ │ ├── edit_distance_test.go │ │ │ ├── knapsack.go │ │ │ ├── knapsack_test.go │ │ │ ├── min_cost_climbing_stairs_dp.go │ │ │ ├── min_path_sum.go │ │ │ ├── min_path_sum_test.go │ │ │ └── unbounded_knapsack.go │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.go │ │ │ ├── graph_adjacency_list_test.go │ │ │ ├── graph_adjacency_matrix.go │ │ │ ├── graph_adjacency_matrix_test.go │ │ │ ├── graph_bfs.go │ │ │ ├── graph_bfs_test.go │ │ │ ├── graph_dfs.go │ │ │ └── graph_dfs_test.go │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.go │ │ │ ├── coin_change_greedy_test.go │ │ │ ├── fractional_knapsack.go │ │ │ ├── fractional_knapsack_test.go │ │ │ ├── max_capacity.go │ │ │ ├── max_capacity_test.go │ │ │ ├── max_product_cutting.go │ │ │ └── max_product_cutting_test.go │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.go │ │ │ ├── array_hash_map_test.go │ │ │ ├── hash_collision_test.go │ │ │ ├── hash_map_chaining.go │ │ │ ├── hash_map_open_addressing.go │ │ │ ├── hash_map_test.go │ │ │ └── simple_hash.go │ │ ├── chapter_heap/ │ │ │ ├── heap.go │ │ │ ├── heap_test.go │ │ │ ├── my_heap.go │ │ │ └── top_k.go │ │ ├── chapter_searching/ │ │ │ ├── binary_search.go │ │ │ ├── binary_search_edge.go │ │ │ ├── binary_search_insertion.go │ │ │ ├── binary_search_test.go │ │ │ ├── hashing_search.go │ │ │ ├── hashing_search_test.go │ │ │ ├── linear_search.go │ │ │ ├── linear_search_test.go │ │ │ ├── two_sum.go │ │ │ └── two_sum_test.go │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.go │ │ │ ├── bubble_sort_test.go │ │ │ ├── bucket_sort.go │ │ │ ├── bucket_sort_test.go │ │ │ ├── counting_sort.go │ │ │ ├── counting_sort_test.go │ │ │ ├── heap_sort.go │ │ │ ├── heap_sort_test.go │ │ │ ├── insertion_sort.go │ │ │ ├── insertion_sort_test.go │ │ │ ├── merge_sort.go │ │ │ ├── merge_sort_test.go │ │ │ ├── quick_sort.go │ │ │ ├── quick_sort_test.go │ │ │ ├── radix_sort.go │ │ │ ├── radix_sort_test.go │ │ │ ├── selection_sort.go │ │ │ └── selection_sort_test.go │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.go │ │ │ ├── array_queue.go │ │ │ ├── array_stack.go │ │ │ ├── deque_test.go │ │ │ ├── linkedlist_deque.go │ │ │ ├── linkedlist_queue.go │ │ │ ├── linkedlist_stack.go │ │ │ ├── queue_test.go │ │ │ └── stack_test.go │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.go │ │ │ ├── array_binary_tree_test.go │ │ │ ├── avl_tree.go │ │ │ ├── avl_tree_test.go │ │ │ ├── binary_search_tree.go │ │ │ ├── binary_search_tree_test.go │ │ │ ├── binary_tree_bfs.go │ │ │ ├── binary_tree_bfs_test.go │ │ │ ├── binary_tree_dfs.go │ │ │ ├── binary_tree_dfs_test.go │ │ │ └── binary_tree_test.go │ │ ├── go.mod │ │ └── pkg/ │ │ ├── list_node.go │ │ ├── list_node_test.go │ │ ├── print_utils.go │ │ ├── tree_node.go │ │ ├── tree_node_test.go │ │ └── vertex.go │ ├── java/ │ │ ├── .gitignore │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.java │ │ │ ├── linked_list.java │ │ │ ├── list.java │ │ │ └── my_list.java │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.java │ │ │ ├── permutations_i.java │ │ │ ├── permutations_ii.java │ │ │ ├── preorder_traversal_i_compact.java │ │ │ ├── preorder_traversal_ii_compact.java │ │ │ ├── preorder_traversal_iii_compact.java │ │ │ ├── preorder_traversal_iii_template.java │ │ │ ├── subset_sum_i.java │ │ │ ├── subset_sum_i_naive.java │ │ │ └── subset_sum_ii.java │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.java │ │ │ ├── recursion.java │ │ │ ├── space_complexity.java │ │ │ ├── time_complexity.java │ │ │ └── worst_best_time_complexity.java │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.java │ │ │ ├── build_tree.java │ │ │ └── hanota.java │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.java │ │ │ ├── climbing_stairs_constraint_dp.java │ │ │ ├── climbing_stairs_dfs.java │ │ │ ├── climbing_stairs_dfs_mem.java │ │ │ ├── climbing_stairs_dp.java │ │ │ ├── coin_change.java │ │ │ ├── coin_change_ii.java │ │ │ ├── edit_distance.java │ │ │ ├── knapsack.java │ │ │ ├── min_cost_climbing_stairs_dp.java │ │ │ ├── min_path_sum.java │ │ │ └── unbounded_knapsack.java │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.java │ │ │ ├── graph_adjacency_matrix.java │ │ │ ├── graph_bfs.java │ │ │ └── graph_dfs.java │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.java │ │ │ ├── fractional_knapsack.java │ │ │ ├── max_capacity.java │ │ │ └── max_product_cutting.java │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.java │ │ │ ├── built_in_hash.java │ │ │ ├── hash_map.java │ │ │ ├── hash_map_chaining.java │ │ │ ├── hash_map_open_addressing.java │ │ │ └── simple_hash.java │ │ ├── chapter_heap/ │ │ │ ├── heap.java │ │ │ ├── my_heap.java │ │ │ └── top_k.java │ │ ├── chapter_searching/ │ │ │ ├── binary_search.java │ │ │ ├── binary_search_edge.java │ │ │ ├── binary_search_insertion.java │ │ │ ├── hashing_search.java │ │ │ ├── linear_search.java │ │ │ └── two_sum.java │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.java │ │ │ ├── bucket_sort.java │ │ │ ├── counting_sort.java │ │ │ ├── heap_sort.java │ │ │ ├── insertion_sort.java │ │ │ ├── merge_sort.java │ │ │ ├── quick_sort.java │ │ │ ├── radix_sort.java │ │ │ └── selection_sort.java │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.java │ │ │ ├── array_queue.java │ │ │ ├── array_stack.java │ │ │ ├── deque.java │ │ │ ├── linkedlist_deque.java │ │ │ ├── linkedlist_queue.java │ │ │ ├── linkedlist_stack.java │ │ │ ├── queue.java │ │ │ └── stack.java │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.java │ │ │ ├── avl_tree.java │ │ │ ├── binary_search_tree.java │ │ │ ├── binary_tree.java │ │ │ ├── binary_tree_bfs.java │ │ │ └── binary_tree_dfs.java │ │ └── utils/ │ │ ├── ListNode.java │ │ ├── PrintUtil.java │ │ ├── TreeNode.java │ │ └── Vertex.java │ ├── javascript/ │ │ ├── .prettierrc │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.js │ │ │ ├── linked_list.js │ │ │ ├── list.js │ │ │ └── my_list.js │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.js │ │ │ ├── permutations_i.js │ │ │ ├── permutations_ii.js │ │ │ ├── preorder_traversal_i_compact.js │ │ │ ├── preorder_traversal_ii_compact.js │ │ │ ├── preorder_traversal_iii_compact.js │ │ │ ├── preorder_traversal_iii_template.js │ │ │ ├── subset_sum_i.js │ │ │ ├── subset_sum_i_naive.js │ │ │ └── subset_sum_ii.js │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.js │ │ │ ├── recursion.js │ │ │ ├── space_complexity.js │ │ │ ├── time_complexity.js │ │ │ └── worst_best_time_complexity.js │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.js │ │ │ ├── build_tree.js │ │ │ └── hanota.js │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.js │ │ │ ├── climbing_stairs_constraint_dp.js │ │ │ ├── climbing_stairs_dfs.js │ │ │ ├── climbing_stairs_dfs_mem.js │ │ │ ├── climbing_stairs_dp.js │ │ │ ├── coin_change.js │ │ │ ├── coin_change_ii.js │ │ │ ├── edit_distance.js │ │ │ ├── knapsack.js │ │ │ ├── min_cost_climbing_stairs_dp.js │ │ │ ├── min_path_sum.js │ │ │ └── unbounded_knapsack.js │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.js │ │ │ ├── graph_adjacency_matrix.js │ │ │ ├── graph_bfs.js │ │ │ └── graph_dfs.js │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.js │ │ │ ├── fractional_knapsack.js │ │ │ ├── max_capacity.js │ │ │ └── max_product_cutting.js │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.js │ │ │ ├── hash_map.js │ │ │ ├── hash_map_chaining.js │ │ │ ├── hash_map_open_addressing.js │ │ │ └── simple_hash.js │ │ ├── chapter_heap/ │ │ │ ├── my_heap.js │ │ │ └── top_k.js │ │ ├── chapter_searching/ │ │ │ ├── binary_search.js │ │ │ ├── binary_search_edge.js │ │ │ ├── binary_search_insertion.js │ │ │ ├── hashing_search.js │ │ │ ├── linear_search.js │ │ │ └── two_sum.js │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.js │ │ │ ├── bucket_sort.js │ │ │ ├── counting_sort.js │ │ │ ├── heap_sort.js │ │ │ ├── insertion_sort.js │ │ │ ├── merge_sort.js │ │ │ ├── quick_sort.js │ │ │ ├── radix_sort.js │ │ │ └── selection_sort.js │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.js │ │ │ ├── array_queue.js │ │ │ ├── array_stack.js │ │ │ ├── deque.js │ │ │ ├── linkedlist_deque.js │ │ │ ├── linkedlist_queue.js │ │ │ ├── linkedlist_stack.js │ │ │ ├── queue.js │ │ │ └── stack.js │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.js │ │ │ ├── avl_tree.js │ │ │ ├── binary_search_tree.js │ │ │ ├── binary_tree.js │ │ │ ├── binary_tree_bfs.js │ │ │ └── binary_tree_dfs.js │ │ ├── modules/ │ │ │ ├── ListNode.js │ │ │ ├── PrintUtil.js │ │ │ ├── TreeNode.js │ │ │ └── Vertex.js │ │ └── test_all.js │ ├── kotlin/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.kt │ │ │ ├── linked_list.kt │ │ │ ├── list.kt │ │ │ └── my_list.kt │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.kt │ │ │ ├── permutations_i.kt │ │ │ ├── permutations_ii.kt │ │ │ ├── preorder_traversal_i_compact.kt │ │ │ ├── preorder_traversal_ii_compact.kt │ │ │ ├── preorder_traversal_iii_compact.kt │ │ │ ├── preorder_traversal_iii_template.kt │ │ │ ├── subset_sum_i.kt │ │ │ ├── subset_sum_i_naive.kt │ │ │ └── subset_sum_ii.kt │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.kt │ │ │ ├── recursion.kt │ │ │ ├── space_complexity.kt │ │ │ ├── time_complexity.kt │ │ │ └── worst_best_time_complexity.kt │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.kt │ │ │ ├── build_tree.kt │ │ │ └── hanota.kt │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.kt │ │ │ ├── climbing_stairs_constraint_dp.kt │ │ │ ├── climbing_stairs_dfs.kt │ │ │ ├── climbing_stairs_dfs_mem.kt │ │ │ ├── climbing_stairs_dp.kt │ │ │ ├── coin_change.kt │ │ │ ├── coin_change_ii.kt │ │ │ ├── edit_distance.kt │ │ │ ├── knapsack.kt │ │ │ ├── min_cost_climbing_stairs_dp.kt │ │ │ ├── min_path_sum.kt │ │ │ └── unbounded_knapsack.kt │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.kt │ │ │ ├── graph_adjacency_matrix.kt │ │ │ ├── graph_bfs.kt │ │ │ └── graph_dfs.kt │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.kt │ │ │ ├── fractional_knapsack.kt │ │ │ ├── max_capacity.kt │ │ │ └── max_product_cutting.kt │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.kt │ │ │ ├── built_in_hash.kt │ │ │ ├── hash_map.kt │ │ │ ├── hash_map_chaining.kt │ │ │ ├── hash_map_open_addressing.kt │ │ │ └── simple_hash.kt │ │ ├── chapter_heap/ │ │ │ ├── heap.kt │ │ │ ├── my_heap.kt │ │ │ └── top_k.kt │ │ ├── chapter_searching/ │ │ │ ├── binary_search.kt │ │ │ ├── binary_search_edge.kt │ │ │ ├── binary_search_insertion.kt │ │ │ ├── hashing_search.kt │ │ │ ├── linear_search.kt │ │ │ └── two_sum.kt │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.kt │ │ │ ├── bucket_sort.kt │ │ │ ├── counting_sort.kt │ │ │ ├── heap_sort.kt │ │ │ ├── insertion_sort.kt │ │ │ ├── merge_sort.kt │ │ │ ├── quick_sort.kt │ │ │ ├── radix_sort.kt │ │ │ └── selection_sort.kt │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.kt │ │ │ ├── array_queue.kt │ │ │ ├── array_stack.kt │ │ │ ├── deque.kt │ │ │ ├── linkedlist_deque.kt │ │ │ ├── linkedlist_queue.kt │ │ │ ├── linkedlist_stack.kt │ │ │ ├── queue.kt │ │ │ └── stack.kt │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.kt │ │ │ ├── avl_tree.kt │ │ │ ├── binary_search_tree.kt │ │ │ ├── binary_tree.kt │ │ │ ├── binary_tree_bfs.kt │ │ │ └── binary_tree_dfs.kt │ │ └── utils/ │ │ ├── ListNode.kt │ │ ├── PrintUtil.kt │ │ ├── TreeNode.kt │ │ └── Vertex.kt │ ├── python/ │ │ ├── .gitignore │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.py │ │ │ ├── linked_list.py │ │ │ ├── list.py │ │ │ └── my_list.py │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.py │ │ │ ├── permutations_i.py │ │ │ ├── permutations_ii.py │ │ │ ├── preorder_traversal_i_compact.py │ │ │ ├── preorder_traversal_ii_compact.py │ │ │ ├── preorder_traversal_iii_compact.py │ │ │ ├── preorder_traversal_iii_template.py │ │ │ ├── subset_sum_i.py │ │ │ ├── subset_sum_i_naive.py │ │ │ └── subset_sum_ii.py │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.py │ │ │ ├── recursion.py │ │ │ ├── space_complexity.py │ │ │ ├── time_complexity.py │ │ │ └── worst_best_time_complexity.py │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.py │ │ │ ├── build_tree.py │ │ │ └── hanota.py │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.py │ │ │ ├── climbing_stairs_constraint_dp.py │ │ │ ├── climbing_stairs_dfs.py │ │ │ ├── climbing_stairs_dfs_mem.py │ │ │ ├── climbing_stairs_dp.py │ │ │ ├── coin_change.py │ │ │ ├── coin_change_ii.py │ │ │ ├── edit_distance.py │ │ │ ├── knapsack.py │ │ │ ├── min_cost_climbing_stairs_dp.py │ │ │ ├── min_path_sum.py │ │ │ └── unbounded_knapsack.py │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.py │ │ │ ├── graph_adjacency_matrix.py │ │ │ ├── graph_bfs.py │ │ │ └── graph_dfs.py │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.py │ │ │ ├── fractional_knapsack.py │ │ │ ├── max_capacity.py │ │ │ └── max_product_cutting.py │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.py │ │ │ ├── built_in_hash.py │ │ │ ├── hash_map.py │ │ │ ├── hash_map_chaining.py │ │ │ ├── hash_map_open_addressing.py │ │ │ └── simple_hash.py │ │ ├── chapter_heap/ │ │ │ ├── heap.py │ │ │ ├── my_heap.py │ │ │ └── top_k.py │ │ ├── chapter_searching/ │ │ │ ├── binary_search.py │ │ │ ├── binary_search_edge.py │ │ │ ├── binary_search_insertion.py │ │ │ ├── hashing_search.py │ │ │ ├── linear_search.py │ │ │ └── two_sum.py │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.py │ │ │ ├── bucket_sort.py │ │ │ ├── counting_sort.py │ │ │ ├── heap_sort.py │ │ │ ├── insertion_sort.py │ │ │ ├── merge_sort.py │ │ │ ├── quick_sort.py │ │ │ ├── radix_sort.py │ │ │ └── selection_sort.py │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.py │ │ │ ├── array_queue.py │ │ │ ├── array_stack.py │ │ │ ├── deque.py │ │ │ ├── linkedlist_deque.py │ │ │ ├── linkedlist_queue.py │ │ │ ├── linkedlist_stack.py │ │ │ ├── queue.py │ │ │ └── stack.py │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.py │ │ │ ├── avl_tree.py │ │ │ ├── binary_search_tree.py │ │ │ ├── binary_tree.py │ │ │ ├── binary_tree_bfs.py │ │ │ └── binary_tree_dfs.py │ │ ├── modules/ │ │ │ ├── __init__.py │ │ │ ├── list_node.py │ │ │ ├── print_util.py │ │ │ ├── tree_node.py │ │ │ └── vertex.py │ │ └── test_all.py │ ├── pythontutor/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.md │ │ │ ├── linked_list.md │ │ │ └── my_list.md │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.md │ │ │ ├── permutations_i.md │ │ │ ├── permutations_ii.md │ │ │ ├── preorder_traversal_i_compact.md │ │ │ ├── preorder_traversal_ii_compact.md │ │ │ ├── preorder_traversal_iii_compact.md │ │ │ ├── preorder_traversal_iii_template.md │ │ │ ├── subset_sum_i.md │ │ │ ├── subset_sum_i_naive.md │ │ │ └── subset_sum_ii.md │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.md │ │ │ ├── recursion.md │ │ │ ├── space_complexity.md │ │ │ ├── time_complexity.md │ │ │ └── worst_best_time_complexity.md │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.md │ │ │ ├── build_tree.md │ │ │ └── hanota.md │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.md │ │ │ ├── climbing_stairs_constraint_dp.md │ │ │ ├── climbing_stairs_dfs.md │ │ │ ├── climbing_stairs_dfs_mem.md │ │ │ ├── climbing_stairs_dp.md │ │ │ ├── coin_change.md │ │ │ ├── coin_change_ii.md │ │ │ ├── edit_distance.md │ │ │ ├── knapsack.md │ │ │ ├── min_cost_climbing_stairs_dp.md │ │ │ ├── min_path_sum.md │ │ │ └── unbounded_knapsack.md │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.md │ │ │ ├── graph_adjacency_matrix.md │ │ │ ├── graph_bfs.md │ │ │ └── graph_dfs.md │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.md │ │ │ ├── fractional_knapsack.md │ │ │ ├── max_capacity.md │ │ │ └── max_product_cutting.md │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.md │ │ │ ├── hash_map_chaining.md │ │ │ └── simple_hash.md │ │ ├── chapter_heap/ │ │ │ ├── my_heap.md │ │ │ └── top_k.md │ │ ├── chapter_searching/ │ │ │ ├── binary_search.md │ │ │ ├── binary_search_edge.md │ │ │ ├── binary_search_insertion.md │ │ │ └── two_sum.md │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.md │ │ │ ├── bucket_sort.md │ │ │ ├── counting_sort.md │ │ │ ├── heap_sort.md │ │ │ ├── insertion_sort.md │ │ │ ├── merge_sort.md │ │ │ ├── quick_sort.md │ │ │ ├── radix_sort.md │ │ │ └── selection_sort.md │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_queue.md │ │ │ ├── array_stack.md │ │ │ ├── linkedlist_queue.md │ │ │ └── linkedlist_stack.md │ │ └── chapter_tree/ │ │ ├── array_binary_tree.md │ │ ├── binary_search_tree.md │ │ ├── binary_tree_bfs.md │ │ └── binary_tree_dfs.md │ ├── ruby/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.rb │ │ │ ├── linked_list.rb │ │ │ ├── list.rb │ │ │ └── my_list.rb │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.rb │ │ │ ├── permutations_i.rb │ │ │ ├── permutations_ii.rb │ │ │ ├── preorder_traversal_i_compact.rb │ │ │ ├── preorder_traversal_ii_compact.rb │ │ │ ├── preorder_traversal_iii_compact.rb │ │ │ ├── preorder_traversal_iii_template.rb │ │ │ ├── subset_sum_i.rb │ │ │ ├── subset_sum_i_naive.rb │ │ │ └── subset_sum_ii.rb │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.rb │ │ │ ├── recursion.rb │ │ │ ├── space_complexity.rb │ │ │ ├── time_complexity.rb │ │ │ └── worst_best_time_complexity.rb │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.rb │ │ │ ├── build_tree.rb │ │ │ └── hanota.rb │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.rb │ │ │ ├── climbing_stairs_constraint_dp.rb │ │ │ ├── climbing_stairs_dfs.rb │ │ │ ├── climbing_stairs_dfs_mem.rb │ │ │ ├── climbing_stairs_dp.rb │ │ │ ├── coin_change.rb │ │ │ ├── coin_change_ii.rb │ │ │ ├── edit_distance.rb │ │ │ ├── knapsack.rb │ │ │ ├── min_cost_climbing_stairs_dp.rb │ │ │ ├── min_path_sum.rb │ │ │ └── unbounded_knapsack.rb │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.rb │ │ │ ├── graph_adjacency_matrix.rb │ │ │ ├── graph_bfs.rb │ │ │ └── graph_dfs.rb │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.rb │ │ │ ├── fractional_knapsack.rb │ │ │ ├── max_capacity.rb │ │ │ └── max_product_cutting.rb │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.rb │ │ │ ├── built_in_hash.rb │ │ │ ├── hash_map.rb │ │ │ ├── hash_map_chaining.rb │ │ │ ├── hash_map_open_addressing.rb │ │ │ └── simple_hash.rb │ │ ├── chapter_heap/ │ │ │ ├── my_heap.rb │ │ │ └── top_k.rb │ │ ├── chapter_searching/ │ │ │ ├── binary_search.rb │ │ │ ├── binary_search_edge.rb │ │ │ ├── binary_search_insertion.rb │ │ │ ├── hashing_search.rb │ │ │ ├── linear_search.rb │ │ │ └── two_sum.rb │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.rb │ │ │ ├── bucket_sort.rb │ │ │ ├── counting_sort.rb │ │ │ ├── heap_sort.rb │ │ │ ├── insertion_sort.rb │ │ │ ├── merge_sort.rb │ │ │ ├── quick_sort.rb │ │ │ ├── radix_sort.rb │ │ │ └── selection_sort.rb │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.rb │ │ │ ├── array_queue.rb │ │ │ ├── array_stack.rb │ │ │ ├── deque.rb │ │ │ ├── linkedlist_deque.rb │ │ │ ├── linkedlist_queue.rb │ │ │ ├── linkedlist_stack.rb │ │ │ ├── queue.rb │ │ │ └── stack.rb │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.rb │ │ │ ├── avl_tree.rb │ │ │ ├── binary_search_tree.rb │ │ │ ├── binary_tree.rb │ │ │ ├── binary_tree_bfs.rb │ │ │ └── binary_tree_dfs.rb │ │ ├── test_all.rb │ │ └── utils/ │ │ ├── list_node.rb │ │ ├── print_util.rb │ │ ├── tree_node.rb │ │ └── vertex.rb │ ├── rust/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.rs │ │ │ ├── linked_list.rs │ │ │ ├── list.rs │ │ │ └── my_list.rs │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.rs │ │ │ ├── permutations_i.rs │ │ │ ├── permutations_ii.rs │ │ │ ├── preorder_traversal_i_compact.rs │ │ │ ├── preorder_traversal_ii_compact.rs │ │ │ ├── preorder_traversal_iii_compact.rs │ │ │ ├── preorder_traversal_iii_template.rs │ │ │ ├── subset_sum_i.rs │ │ │ ├── subset_sum_i_naive.rs │ │ │ └── subset_sum_ii.rs │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.rs │ │ │ ├── recursion.rs │ │ │ ├── space_complexity.rs │ │ │ ├── time_complexity.rs │ │ │ └── worst_best_time_complexity.rs │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.rs │ │ │ ├── build_tree.rs │ │ │ └── hanota.rs │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.rs │ │ │ ├── climbing_stairs_constraint_dp.rs │ │ │ ├── climbing_stairs_dfs.rs │ │ │ ├── climbing_stairs_dfs_mem.rs │ │ │ ├── climbing_stairs_dp.rs │ │ │ ├── coin_change.rs │ │ │ ├── coin_change_ii.rs │ │ │ ├── edit_distance.rs │ │ │ ├── knapsack.rs │ │ │ ├── min_cost_climbing_stairs_dp.rs │ │ │ ├── min_path_sum.rs │ │ │ └── unbounded_knapsack.rs │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.rs │ │ │ ├── graph_adjacency_matrix.rs │ │ │ ├── graph_bfs.rs │ │ │ └── graph_dfs.rs │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.rs │ │ │ ├── fractional_knapsack.rs │ │ │ ├── max_capacity.rs │ │ │ └── max_product_cutting.rs │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.rs │ │ │ ├── build_in_hash.rs │ │ │ ├── hash_map.rs │ │ │ ├── hash_map_chaining.rs │ │ │ ├── hash_map_open_addressing.rs │ │ │ └── simple_hash.rs │ │ ├── chapter_heap/ │ │ │ ├── heap.rs │ │ │ ├── my_heap.rs │ │ │ └── top_k.rs │ │ ├── chapter_searching/ │ │ │ ├── binary_search.rs │ │ │ ├── binary_search_edge.rs │ │ │ ├── binary_search_insertion.rs │ │ │ ├── hashing_search.rs │ │ │ ├── linear_search.rs │ │ │ └── two_sum.rs │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.rs │ │ │ ├── bucket_sort.rs │ │ │ ├── counting_sort.rs │ │ │ ├── heap_sort.rs │ │ │ ├── insertion_sort.rs │ │ │ ├── merge_sort.rs │ │ │ ├── quick_sort.rs │ │ │ ├── radix_sort.rs │ │ │ └── selection_sort.rs │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.rs │ │ │ ├── array_queue.rs │ │ │ ├── array_stack.rs │ │ │ ├── deque.rs │ │ │ ├── linkedlist_deque.rs │ │ │ ├── linkedlist_queue.rs │ │ │ ├── linkedlist_stack.rs │ │ │ ├── queue.rs │ │ │ └── stack.rs │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.rs │ │ │ ├── avl_tree.rs │ │ │ ├── binary_search_tree.rs │ │ │ ├── binary_tree.rs │ │ │ ├── binary_tree_bfs.rs │ │ │ └── binary_tree_dfs.rs │ │ └── src/ │ │ ├── include/ │ │ │ ├── list_node.rs │ │ │ ├── mod.rs │ │ │ ├── print_util.rs │ │ │ ├── tree_node.rs │ │ │ └── vertex.rs │ │ └── lib.rs │ ├── swift/ │ │ ├── .gitignore │ │ ├── Package.resolved │ │ ├── Package.swift │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.swift │ │ │ ├── linked_list.swift │ │ │ ├── list.swift │ │ │ └── my_list.swift │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.swift │ │ │ ├── permutations_i.swift │ │ │ ├── permutations_ii.swift │ │ │ ├── preorder_traversal_i_compact.swift │ │ │ ├── preorder_traversal_ii_compact.swift │ │ │ ├── preorder_traversal_iii_compact.swift │ │ │ ├── preorder_traversal_iii_template.swift │ │ │ ├── subset_sum_i.swift │ │ │ ├── subset_sum_i_naive.swift │ │ │ └── subset_sum_ii.swift │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.swift │ │ │ ├── recursion.swift │ │ │ ├── space_complexity.swift │ │ │ ├── time_complexity.swift │ │ │ └── worst_best_time_complexity.swift │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.swift │ │ │ ├── build_tree.swift │ │ │ └── hanota.swift │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.swift │ │ │ ├── climbing_stairs_constraint_dp.swift │ │ │ ├── climbing_stairs_dfs.swift │ │ │ ├── climbing_stairs_dfs_mem.swift │ │ │ ├── climbing_stairs_dp.swift │ │ │ ├── coin_change.swift │ │ │ ├── coin_change_ii.swift │ │ │ ├── edit_distance.swift │ │ │ ├── knapsack.swift │ │ │ ├── min_cost_climbing_stairs_dp.swift │ │ │ ├── min_path_sum.swift │ │ │ └── unbounded_knapsack.swift │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.swift │ │ │ ├── graph_adjacency_matrix.swift │ │ │ ├── graph_bfs.swift │ │ │ └── graph_dfs.swift │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.swift │ │ │ ├── fractional_knapsack.swift │ │ │ ├── max_capacity.swift │ │ │ └── max_product_cutting.swift │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.swift │ │ │ ├── built_in_hash.swift │ │ │ ├── hash_map.swift │ │ │ ├── hash_map_chaining.swift │ │ │ ├── hash_map_open_addressing.swift │ │ │ └── simple_hash.swift │ │ ├── chapter_heap/ │ │ │ ├── heap.swift │ │ │ ├── my_heap.swift │ │ │ └── top_k.swift │ │ ├── chapter_searching/ │ │ │ ├── binary_search.swift │ │ │ ├── binary_search_edge.swift │ │ │ ├── binary_search_insertion.swift │ │ │ ├── hashing_search.swift │ │ │ ├── linear_search.swift │ │ │ └── two_sum.swift │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.swift │ │ │ ├── bucket_sort.swift │ │ │ ├── counting_sort.swift │ │ │ ├── heap_sort.swift │ │ │ ├── insertion_sort.swift │ │ │ ├── merge_sort.swift │ │ │ ├── quick_sort.swift │ │ │ ├── radix_sort.swift │ │ │ └── selection_sort.swift │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.swift │ │ │ ├── array_queue.swift │ │ │ ├── array_stack.swift │ │ │ ├── deque.swift │ │ │ ├── linkedlist_deque.swift │ │ │ ├── linkedlist_queue.swift │ │ │ ├── linkedlist_stack.swift │ │ │ ├── queue.swift │ │ │ └── stack.swift │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.swift │ │ │ ├── avl_tree.swift │ │ │ ├── binary_search_tree.swift │ │ │ ├── binary_tree.swift │ │ │ ├── binary_tree_bfs.swift │ │ │ └── binary_tree_dfs.swift │ │ └── utils/ │ │ ├── ListNode.swift │ │ ├── Pair.swift │ │ ├── PrintUtil.swift │ │ ├── TreeNode.swift │ │ └── Vertex.swift │ ├── typescript/ │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.ts │ │ │ ├── linked_list.ts │ │ │ ├── list.ts │ │ │ └── my_list.ts │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.ts │ │ │ ├── permutations_i.ts │ │ │ ├── permutations_ii.ts │ │ │ ├── preorder_traversal_i_compact.ts │ │ │ ├── preorder_traversal_ii_compact.ts │ │ │ ├── preorder_traversal_iii_compact.ts │ │ │ ├── preorder_traversal_iii_template.ts │ │ │ ├── subset_sum_i.ts │ │ │ ├── subset_sum_i_naive.ts │ │ │ └── subset_sum_ii.ts │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.ts │ │ │ ├── recursion.ts │ │ │ ├── space_complexity.ts │ │ │ ├── time_complexity.ts │ │ │ └── worst_best_time_complexity.ts │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.ts │ │ │ ├── build_tree.ts │ │ │ └── hanota.ts │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.ts │ │ │ ├── climbing_stairs_constraint_dp.ts │ │ │ ├── climbing_stairs_dfs.ts │ │ │ ├── climbing_stairs_dfs_mem.ts │ │ │ ├── climbing_stairs_dp.ts │ │ │ ├── coin_change.ts │ │ │ ├── coin_change_ii.ts │ │ │ ├── edit_distance.ts │ │ │ ├── knapsack.ts │ │ │ ├── min_cost_climbing_stairs_dp.ts │ │ │ ├── min_path_sum.ts │ │ │ └── unbounded_knapsack.ts │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.ts │ │ │ ├── graph_adjacency_matrix.ts │ │ │ ├── graph_bfs.ts │ │ │ └── graph_dfs.ts │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.ts │ │ │ ├── fractional_knapsack.ts │ │ │ ├── max_capacity.ts │ │ │ └── max_product_cutting.ts │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.ts │ │ │ ├── hash_map.ts │ │ │ ├── hash_map_chaining.ts │ │ │ ├── hash_map_open_addressing.ts │ │ │ └── simple_hash.ts │ │ ├── chapter_heap/ │ │ │ ├── my_heap.ts │ │ │ └── top_k.ts │ │ ├── chapter_searching/ │ │ │ ├── binary_search.ts │ │ │ ├── binary_search_edge.ts │ │ │ ├── binary_search_insertion.ts │ │ │ ├── hashing_search.ts │ │ │ ├── linear_search.ts │ │ │ └── two_sum.ts │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.ts │ │ │ ├── bucket_sort.ts │ │ │ ├── counting_sort.ts │ │ │ ├── heap_sort.ts │ │ │ ├── insertion_sort.ts │ │ │ ├── merge_sort.ts │ │ │ ├── quick_sort.ts │ │ │ ├── radix_sort.ts │ │ │ └── selection_sort.ts │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.ts │ │ │ ├── array_queue.ts │ │ │ ├── array_stack.ts │ │ │ ├── deque.ts │ │ │ ├── linkedlist_deque.ts │ │ │ ├── linkedlist_queue.ts │ │ │ ├── linkedlist_stack.ts │ │ │ ├── queue.ts │ │ │ └── stack.ts │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.ts │ │ │ ├── avl_tree.ts │ │ │ ├── binary_search_tree.ts │ │ │ ├── binary_tree.ts │ │ │ ├── binary_tree_bfs.ts │ │ │ └── binary_tree_dfs.ts │ │ ├── modules/ │ │ │ ├── ListNode.ts │ │ │ ├── PrintUtil.ts │ │ │ ├── TreeNode.ts │ │ │ └── Vertex.ts │ │ ├── package.json │ │ └── tsconfig.json │ └── zig/ │ ├── .gitignore │ ├── build.zig │ ├── chapter_array_and_linkedlist/ │ │ ├── array.zig │ │ ├── linked_list.zig │ │ ├── list.zig │ │ └── my_list.zig │ ├── chapter_computational_complexity/ │ │ ├── iteration.zig │ │ ├── recursion.zig │ │ ├── space_complexity.zig │ │ ├── time_complexity.zig │ │ └── worst_best_time_complexity.zig │ ├── chapter_dynamic_programming/ │ │ ├── climbing_stairs_backtrack.zig │ │ ├── climbing_stairs_constraint_dp.zig │ │ ├── climbing_stairs_dfs.zig │ │ ├── climbing_stairs_dfs_mem.zig │ │ ├── climbing_stairs_dp.zig │ │ ├── coin_change.zig │ │ ├── coin_change_ii.zig │ │ ├── edit_distance.zig │ │ ├── knapsack.zig │ │ ├── min_cost_climbing_stairs_dp.zig │ │ ├── min_path_sum.zig │ │ └── unbounded_knapsack.zig │ ├── chapter_hashing/ │ │ ├── array_hash_map.zig │ │ └── hash_map.zig │ ├── chapter_heap/ │ │ ├── heap.zig │ │ └── my_heap.zig │ ├── chapter_searching/ │ │ ├── binary_search.zig │ │ ├── hashing_search.zig │ │ ├── linear_search.zig │ │ └── two_sum.zig │ ├── chapter_sorting/ │ │ ├── bubble_sort.zig │ │ ├── insertion_sort.zig │ │ ├── merge_sort.zig │ │ ├── quick_sort.zig │ │ └── radix_sort.zig │ ├── chapter_stack_and_queue/ │ │ ├── array_queue.zig │ │ ├── array_stack.zig │ │ ├── deque.zig │ │ ├── linkedlist_deque.zig │ │ ├── linkedlist_queue.zig │ │ ├── linkedlist_stack.zig │ │ ├── queue.zig │ │ └── stack.zig │ ├── chapter_tree/ │ │ ├── avl_tree.zig │ │ ├── binary_search_tree.zig │ │ ├── binary_tree.zig │ │ ├── binary_tree_bfs.zig │ │ └── binary_tree_dfs.zig │ ├── include/ │ │ ├── PrintUtil.zig │ │ └── include.zig │ ├── main.zig │ └── utils/ │ ├── ListNode.zig │ ├── TreeNode.zig │ ├── format.zig │ └── utils.zig ├── docker-compose.yml ├── docs/ │ ├── chapter_appendix/ │ │ ├── contribution.md │ │ ├── index.md │ │ ├── installation.md │ │ └── terminology.md │ ├── chapter_array_and_linkedlist/ │ │ ├── array.md │ │ ├── index.md │ │ ├── linked_list.md │ │ ├── list.md │ │ ├── ram_and_cache.md │ │ └── summary.md │ ├── chapter_backtracking/ │ │ ├── backtracking_algorithm.md │ │ ├── index.md │ │ ├── n_queens_problem.md │ │ ├── permutations_problem.md │ │ ├── subset_sum_problem.md │ │ └── summary.md │ ├── chapter_computational_complexity/ │ │ ├── index.md │ │ ├── iteration_and_recursion.md │ │ ├── performance_evaluation.md │ │ ├── space_complexity.md │ │ ├── summary.md │ │ └── time_complexity.md │ ├── chapter_data_structure/ │ │ ├── basic_data_types.md │ │ ├── character_encoding.md │ │ ├── classification_of_data_structure.md │ │ ├── index.md │ │ ├── number_encoding.md │ │ └── summary.md │ ├── chapter_divide_and_conquer/ │ │ ├── binary_search_recur.md │ │ ├── build_binary_tree_problem.md │ │ ├── divide_and_conquer.md │ │ ├── hanota_problem.md │ │ ├── index.md │ │ └── summary.md │ ├── chapter_dynamic_programming/ │ │ ├── dp_problem_features.md │ │ ├── dp_solution_pipeline.md │ │ ├── edit_distance_problem.md │ │ ├── index.md │ │ ├── intro_to_dynamic_programming.md │ │ ├── knapsack_problem.md │ │ ├── summary.md │ │ └── unbounded_knapsack_problem.md │ ├── chapter_graph/ │ │ ├── graph.md │ │ ├── graph_operations.md │ │ ├── graph_traversal.md │ │ ├── index.md │ │ └── summary.md │ ├── chapter_greedy/ │ │ ├── fractional_knapsack_problem.md │ │ ├── greedy_algorithm.md │ │ ├── index.md │ │ ├── max_capacity_problem.md │ │ ├── max_product_cutting_problem.md │ │ └── summary.md │ ├── chapter_hashing/ │ │ ├── hash_algorithm.md │ │ ├── hash_collision.md │ │ ├── hash_map.md │ │ ├── index.md │ │ └── summary.md │ ├── chapter_heap/ │ │ ├── build_heap.md │ │ ├── heap.md │ │ ├── index.md │ │ ├── summary.md │ │ └── top_k.md │ ├── chapter_hello_algo/ │ │ └── index.md │ ├── chapter_introduction/ │ │ ├── algorithms_are_everywhere.md │ │ ├── index.md │ │ ├── summary.md │ │ └── what_is_dsa.md │ ├── chapter_paperbook/ │ │ └── index.md │ ├── chapter_preface/ │ │ ├── about_the_book.md │ │ ├── index.md │ │ ├── suggestions.md │ │ └── summary.md │ ├── chapter_reference/ │ │ └── index.md │ ├── chapter_searching/ │ │ ├── binary_search.md │ │ ├── binary_search_edge.md │ │ ├── binary_search_insertion.md │ │ ├── index.md │ │ ├── replace_linear_by_hashing.md │ │ ├── searching_algorithm_revisited.md │ │ └── summary.md │ ├── chapter_sorting/ │ │ ├── bubble_sort.md │ │ ├── bucket_sort.md │ │ ├── counting_sort.md │ │ ├── heap_sort.md │ │ ├── index.md │ │ ├── insertion_sort.md │ │ ├── merge_sort.md │ │ ├── quick_sort.md │ │ ├── radix_sort.md │ │ ├── selection_sort.md │ │ ├── sorting_algorithm.md │ │ └── summary.md │ ├── chapter_stack_and_queue/ │ │ ├── deque.md │ │ ├── index.md │ │ ├── queue.md │ │ ├── stack.md │ │ └── summary.md │ ├── chapter_tree/ │ │ ├── array_representation_of_tree.md │ │ ├── avl_tree.md │ │ ├── binary_search_tree.md │ │ ├── binary_tree.md │ │ ├── binary_tree_traversal.md │ │ ├── index.md │ │ └── summary.md │ ├── index.html │ └── index.md ├── en/ │ ├── CONTRIBUTING.md │ ├── README.md │ ├── codes/ │ │ ├── c/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array.c │ │ │ │ ├── linked_list.c │ │ │ │ └── my_list.c │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── n_queens.c │ │ │ │ ├── permutations_i.c │ │ │ │ ├── permutations_ii.c │ │ │ │ ├── preorder_traversal_i_compact.c │ │ │ │ ├── preorder_traversal_ii_compact.c │ │ │ │ ├── preorder_traversal_iii_compact.c │ │ │ │ ├── preorder_traversal_iii_template.c │ │ │ │ ├── subset_sum_i.c │ │ │ │ ├── subset_sum_i_naive.c │ │ │ │ └── subset_sum_ii.c │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── iteration.c │ │ │ │ ├── recursion.c │ │ │ │ ├── space_complexity.c │ │ │ │ ├── time_complexity.c │ │ │ │ └── worst_best_time_complexity.c │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search_recur.c │ │ │ │ ├── build_tree.c │ │ │ │ └── hanota.c │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── climbing_stairs_backtrack.c │ │ │ │ ├── climbing_stairs_constraint_dp.c │ │ │ │ ├── climbing_stairs_dfs.c │ │ │ │ ├── climbing_stairs_dfs_mem.c │ │ │ │ ├── climbing_stairs_dp.c │ │ │ │ ├── coin_change.c │ │ │ │ ├── coin_change_ii.c │ │ │ │ ├── edit_distance.c │ │ │ │ ├── knapsack.c │ │ │ │ ├── min_cost_climbing_stairs_dp.c │ │ │ │ ├── min_path_sum.c │ │ │ │ └── unbounded_knapsack.c │ │ │ ├── chapter_graph/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── graph_adjacency_list.c │ │ │ │ ├── graph_adjacency_list_test.c │ │ │ │ ├── graph_adjacency_matrix.c │ │ │ │ ├── graph_bfs.c │ │ │ │ └── graph_dfs.c │ │ │ ├── chapter_greedy/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── coin_change_greedy.c │ │ │ │ ├── fractional_knapsack.c │ │ │ │ ├── max_capacity.c │ │ │ │ └── max_product_cutting.c │ │ │ ├── chapter_hashing/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_hash_map.c │ │ │ │ ├── hash_map_chaining.c │ │ │ │ ├── hash_map_open_addressing.c │ │ │ │ └── simple_hash.c │ │ │ ├── chapter_heap/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── my_heap.c │ │ │ │ ├── my_heap_test.c │ │ │ │ └── top_k.c │ │ │ ├── chapter_searching/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search.c │ │ │ │ ├── binary_search_edge.c │ │ │ │ ├── binary_search_insertion.c │ │ │ │ └── two_sum.c │ │ │ ├── chapter_sorting/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bubble_sort.c │ │ │ │ ├── bucket_sort.c │ │ │ │ ├── counting_sort.c │ │ │ │ ├── heap_sort.c │ │ │ │ ├── insertion_sort.c │ │ │ │ ├── merge_sort.c │ │ │ │ ├── quick_sort.c │ │ │ │ ├── radix_sort.c │ │ │ │ └── selection_sort.c │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_deque.c │ │ │ │ ├── array_queue.c │ │ │ │ ├── array_stack.c │ │ │ │ ├── linkedlist_deque.c │ │ │ │ ├── linkedlist_queue.c │ │ │ │ └── linkedlist_stack.c │ │ │ ├── chapter_tree/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_binary_tree.c │ │ │ │ ├── avl_tree.c │ │ │ │ ├── binary_search_tree.c │ │ │ │ ├── binary_tree.c │ │ │ │ ├── binary_tree_bfs.c │ │ │ │ └── binary_tree_dfs.c │ │ │ └── utils/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.h │ │ │ ├── common_test.c │ │ │ ├── list_node.h │ │ │ ├── print_util.h │ │ │ ├── tree_node.h │ │ │ ├── uthash.h │ │ │ ├── vector.h │ │ │ └── vertex.h │ │ ├── cpp/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array.cpp │ │ │ │ ├── linked_list.cpp │ │ │ │ ├── list.cpp │ │ │ │ └── my_list.cpp │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── n_queens.cpp │ │ │ │ ├── permutations_i.cpp │ │ │ │ ├── permutations_ii.cpp │ │ │ │ ├── preorder_traversal_i_compact.cpp │ │ │ │ ├── preorder_traversal_ii_compact.cpp │ │ │ │ ├── preorder_traversal_iii_compact.cpp │ │ │ │ ├── preorder_traversal_iii_template.cpp │ │ │ │ ├── subset_sum_i.cpp │ │ │ │ ├── subset_sum_i_naive.cpp │ │ │ │ └── subset_sum_ii.cpp │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── iteration.cpp │ │ │ │ ├── recursion.cpp │ │ │ │ ├── space_complexity.cpp │ │ │ │ ├── time_complexity.cpp │ │ │ │ └── worst_best_time_complexity.cpp │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search_recur.cpp │ │ │ │ ├── build_tree.cpp │ │ │ │ └── hanota.cpp │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── climbing_stairs_backtrack.cpp │ │ │ │ ├── climbing_stairs_constraint_dp.cpp │ │ │ │ ├── climbing_stairs_dfs.cpp │ │ │ │ ├── climbing_stairs_dfs_mem.cpp │ │ │ │ ├── climbing_stairs_dp.cpp │ │ │ │ ├── coin_change.cpp │ │ │ │ ├── coin_change_ii.cpp │ │ │ │ ├── edit_distance.cpp │ │ │ │ ├── knapsack.cpp │ │ │ │ ├── min_cost_climbing_stairs_dp.cpp │ │ │ │ ├── min_path_sum.cpp │ │ │ │ └── unbounded_knapsack.cpp │ │ │ ├── chapter_graph/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── graph_adjacency_list.cpp │ │ │ │ ├── graph_adjacency_list_test.cpp │ │ │ │ ├── graph_adjacency_matrix.cpp │ │ │ │ ├── graph_bfs.cpp │ │ │ │ └── graph_dfs.cpp │ │ │ ├── chapter_greedy/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── coin_change_greedy.cpp │ │ │ │ ├── fractional_knapsack.cpp │ │ │ │ ├── max_capacity.cpp │ │ │ │ └── max_product_cutting.cpp │ │ │ ├── chapter_hashing/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_hash_map.cpp │ │ │ │ ├── array_hash_map_test.cpp │ │ │ │ ├── built_in_hash.cpp │ │ │ │ ├── hash_map.cpp │ │ │ │ ├── hash_map_chaining.cpp │ │ │ │ ├── hash_map_open_addressing.cpp │ │ │ │ └── simple_hash.cpp │ │ │ ├── chapter_heap/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── heap.cpp │ │ │ │ ├── my_heap.cpp │ │ │ │ └── top_k.cpp │ │ │ ├── chapter_searching/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search.cpp │ │ │ │ ├── binary_search_edge.cpp │ │ │ │ ├── binary_search_insertion.cpp │ │ │ │ ├── hashing_search.cpp │ │ │ │ ├── linear_search.cpp │ │ │ │ └── two_sum.cpp │ │ │ ├── chapter_sorting/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bubble_sort.cpp │ │ │ │ ├── bucket_sort.cpp │ │ │ │ ├── counting_sort.cpp │ │ │ │ ├── heap_sort.cpp │ │ │ │ ├── insertion_sort.cpp │ │ │ │ ├── merge_sort.cpp │ │ │ │ ├── quick_sort.cpp │ │ │ │ ├── radix_sort.cpp │ │ │ │ └── selection_sort.cpp │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_deque.cpp │ │ │ │ ├── array_queue.cpp │ │ │ │ ├── array_stack.cpp │ │ │ │ ├── deque.cpp │ │ │ │ ├── linkedlist_deque.cpp │ │ │ │ ├── linkedlist_queue.cpp │ │ │ │ ├── linkedlist_stack.cpp │ │ │ │ ├── queue.cpp │ │ │ │ └── stack.cpp │ │ │ ├── chapter_tree/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_binary_tree.cpp │ │ │ │ ├── avl_tree.cpp │ │ │ │ ├── binary_search_tree.cpp │ │ │ │ ├── binary_tree.cpp │ │ │ │ ├── binary_tree_bfs.cpp │ │ │ │ └── binary_tree_dfs.cpp │ │ │ └── utils/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.hpp │ │ │ ├── list_node.hpp │ │ │ ├── print_utils.hpp │ │ │ ├── tree_node.hpp │ │ │ └── vertex.hpp │ │ ├── csharp/ │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── GlobalUsing.cs │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.cs │ │ │ │ ├── linked_list.cs │ │ │ │ ├── list.cs │ │ │ │ └── my_list.cs │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.cs │ │ │ │ ├── permutations_i.cs │ │ │ │ ├── permutations_ii.cs │ │ │ │ ├── preorder_traversal_i_compact.cs │ │ │ │ ├── preorder_traversal_ii_compact.cs │ │ │ │ ├── preorder_traversal_iii_compact.cs │ │ │ │ ├── preorder_traversal_iii_template.cs │ │ │ │ ├── subset_sum_i.cs │ │ │ │ ├── subset_sum_i_naive.cs │ │ │ │ └── subset_sum_ii.cs │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.cs │ │ │ │ ├── recursion.cs │ │ │ │ ├── space_complexity.cs │ │ │ │ ├── time_complexity.cs │ │ │ │ └── worst_best_time_complexity.cs │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.cs │ │ │ │ ├── build_tree.cs │ │ │ │ └── hanota.cs │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.cs │ │ │ │ ├── climbing_stairs_constraint_dp.cs │ │ │ │ ├── climbing_stairs_dfs.cs │ │ │ │ ├── climbing_stairs_dfs_mem.cs │ │ │ │ ├── climbing_stairs_dp.cs │ │ │ │ ├── coin_change.cs │ │ │ │ ├── coin_change_ii.cs │ │ │ │ ├── edit_distance.cs │ │ │ │ ├── knapsack.cs │ │ │ │ ├── min_cost_climbing_stairs_dp.cs │ │ │ │ ├── min_path_sum.cs │ │ │ │ └── unbounded_knapsack.cs │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.cs │ │ │ │ ├── graph_adjacency_matrix.cs │ │ │ │ ├── graph_bfs.cs │ │ │ │ └── graph_dfs.cs │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.cs │ │ │ │ ├── fractional_knapsack.cs │ │ │ │ ├── max_capacity.cs │ │ │ │ └── max_product_cutting.cs │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.cs │ │ │ │ ├── built_in_hash.cs │ │ │ │ ├── hash_map.cs │ │ │ │ ├── hash_map_chaining.cs │ │ │ │ ├── hash_map_open_addressing.cs │ │ │ │ └── simple_hash.cs │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.cs │ │ │ │ ├── my_heap.cs │ │ │ │ └── top_k.cs │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.cs │ │ │ │ ├── binary_search_edge.cs │ │ │ │ ├── binary_search_insertion.cs │ │ │ │ ├── hashing_search.cs │ │ │ │ ├── linear_search.cs │ │ │ │ └── two_sum.cs │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.cs │ │ │ │ ├── bucket_sort.cs │ │ │ │ ├── counting_sort.cs │ │ │ │ ├── heap_sort.cs │ │ │ │ ├── insertion_sort.cs │ │ │ │ ├── merge_sort.cs │ │ │ │ ├── quick_sort.cs │ │ │ │ ├── radix_sort.cs │ │ │ │ └── selection_sort.cs │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.cs │ │ │ │ ├── array_queue.cs │ │ │ │ ├── array_stack.cs │ │ │ │ ├── deque.cs │ │ │ │ ├── linkedlist_deque.cs │ │ │ │ ├── linkedlist_queue.cs │ │ │ │ ├── linkedlist_stack.cs │ │ │ │ ├── queue.cs │ │ │ │ └── stack.cs │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.cs │ │ │ │ ├── avl_tree.cs │ │ │ │ ├── binary_search_tree.cs │ │ │ │ ├── binary_tree.cs │ │ │ │ ├── binary_tree_bfs.cs │ │ │ │ └── binary_tree_dfs.cs │ │ │ ├── csharp.sln │ │ │ ├── hello-algo.csproj │ │ │ └── utils/ │ │ │ ├── ListNode.cs │ │ │ ├── PrintUtil.cs │ │ │ ├── TreeNode.cs │ │ │ └── Vertex.cs │ │ ├── dart/ │ │ │ ├── build.dart │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.dart │ │ │ │ ├── linked_list.dart │ │ │ │ ├── list.dart │ │ │ │ └── my_list.dart │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.dart │ │ │ │ ├── permutations_i.dart │ │ │ │ ├── permutations_ii.dart │ │ │ │ ├── preorder_traversal_i_compact.dart │ │ │ │ ├── preorder_traversal_ii_compact.dart │ │ │ │ ├── preorder_traversal_iii_compact.dart │ │ │ │ ├── preorder_traversal_iii_template.dart │ │ │ │ ├── subset_sum_i.dart │ │ │ │ ├── subset_sum_i_naive.dart │ │ │ │ └── subset_sum_ii.dart │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.dart │ │ │ │ ├── recursion.dart │ │ │ │ ├── space_complexity.dart │ │ │ │ ├── time_complexity.dart │ │ │ │ └── worst_best_time_complexity.dart │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.dart │ │ │ │ ├── build_tree.dart │ │ │ │ └── hanota.dart │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.dart │ │ │ │ ├── climbing_stairs_constraint_dp.dart │ │ │ │ ├── climbing_stairs_dfs.dart │ │ │ │ ├── climbing_stairs_dfs_mem.dart │ │ │ │ ├── climbing_stairs_dp.dart │ │ │ │ ├── coin_change.dart │ │ │ │ ├── coin_change_ii.dart │ │ │ │ ├── edit_distance.dart │ │ │ │ ├── knapsack.dart │ │ │ │ ├── min_cost_climbing_stairs_dp.dart │ │ │ │ ├── min_path_sum.dart │ │ │ │ └── unbounded_knapsack.dart │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.dart │ │ │ │ ├── graph_adjacency_matrix.dart │ │ │ │ ├── graph_bfs.dart │ │ │ │ └── graph_dfs.dart │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.dart │ │ │ │ ├── fractional_knapsack.dart │ │ │ │ ├── max_capacity.dart │ │ │ │ └── max_product_cutting.dart │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.dart │ │ │ │ ├── built_in_hash.dart │ │ │ │ ├── hash_map.dart │ │ │ │ ├── hash_map_chaining.dart │ │ │ │ ├── hash_map_open_addressing.dart │ │ │ │ └── simple_hash.dart │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.dart │ │ │ │ └── top_k.dart │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.dart │ │ │ │ ├── binary_search_edge.dart │ │ │ │ ├── binary_search_insertion.dart │ │ │ │ ├── hashing_search.dart │ │ │ │ ├── linear_search.dart │ │ │ │ └── two_sum.dart │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.dart │ │ │ │ ├── bucket_sort.dart │ │ │ │ ├── counting_sort.dart │ │ │ │ ├── heap_sort.dart │ │ │ │ ├── insertion_sort.dart │ │ │ │ ├── merge_sort.dart │ │ │ │ ├── quick_sort.dart │ │ │ │ ├── radix_sort.dart │ │ │ │ └── selection_sort.dart │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.dart │ │ │ │ ├── array_queue.dart │ │ │ │ ├── array_stack.dart │ │ │ │ ├── deque.dart │ │ │ │ ├── linkedlist_deque.dart │ │ │ │ ├── linkedlist_queue.dart │ │ │ │ ├── linkedlist_stack.dart │ │ │ │ ├── queue.dart │ │ │ │ └── stack.dart │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.dart │ │ │ │ ├── avl_tree.dart │ │ │ │ ├── binary_search_tree.dart │ │ │ │ ├── binary_tree.dart │ │ │ │ ├── binary_tree_bfs.dart │ │ │ │ └── binary_tree_dfs.dart │ │ │ └── utils/ │ │ │ ├── list_node.dart │ │ │ ├── print_util.dart │ │ │ ├── tree_node.dart │ │ │ └── vertex.dart │ │ ├── go/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.go │ │ │ │ ├── array_test.go │ │ │ │ ├── linked_list.go │ │ │ │ ├── linked_list_test.go │ │ │ │ ├── list_test.go │ │ │ │ ├── my_list.go │ │ │ │ └── my_list_test.go │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.go │ │ │ │ ├── n_queens_test.go │ │ │ │ ├── permutation_test.go │ │ │ │ ├── permutations_i.go │ │ │ │ ├── permutations_ii.go │ │ │ │ ├── preorder_traversal_i_compact.go │ │ │ │ ├── preorder_traversal_ii_compact.go │ │ │ │ ├── preorder_traversal_iii_compact.go │ │ │ │ ├── preorder_traversal_iii_template.go │ │ │ │ ├── preorder_traversal_test.go │ │ │ │ ├── subset_sum_i.go │ │ │ │ ├── subset_sum_i_naive.go │ │ │ │ ├── subset_sum_ii.go │ │ │ │ └── subset_sum_test.go │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.go │ │ │ │ ├── iteration_test.go │ │ │ │ ├── recursion.go │ │ │ │ ├── recursion_test.go │ │ │ │ ├── space_complexity.go │ │ │ │ ├── space_complexity_test.go │ │ │ │ ├── time_complexity.go │ │ │ │ ├── time_complexity_test.go │ │ │ │ ├── worst_best_time_complexity.go │ │ │ │ └── worst_best_time_complexity_test.go │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.go │ │ │ │ ├── binary_search_recur_test.go │ │ │ │ ├── build_tree.go │ │ │ │ ├── build_tree_test.go │ │ │ │ ├── hanota.go │ │ │ │ └── hanota_test.go │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.go │ │ │ │ ├── climbing_stairs_constraint_dp.go │ │ │ │ ├── climbing_stairs_dfs.go │ │ │ │ ├── climbing_stairs_dfs_mem.go │ │ │ │ ├── climbing_stairs_dp.go │ │ │ │ ├── climbing_stairs_test.go │ │ │ │ ├── coin_change.go │ │ │ │ ├── coin_change_ii.go │ │ │ │ ├── coin_change_test.go │ │ │ │ ├── edit_distance.go │ │ │ │ ├── edit_distance_test.go │ │ │ │ ├── knapsack.go │ │ │ │ ├── knapsack_test.go │ │ │ │ ├── min_cost_climbing_stairs_dp.go │ │ │ │ ├── min_path_sum.go │ │ │ │ ├── min_path_sum_test.go │ │ │ │ └── unbounded_knapsack.go │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.go │ │ │ │ ├── graph_adjacency_list_test.go │ │ │ │ ├── graph_adjacency_matrix.go │ │ │ │ ├── graph_adjacency_matrix_test.go │ │ │ │ ├── graph_bfs.go │ │ │ │ ├── graph_bfs_test.go │ │ │ │ ├── graph_dfs.go │ │ │ │ └── graph_dfs_test.go │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.go │ │ │ │ ├── coin_change_greedy_test.go │ │ │ │ ├── fractional_knapsack.go │ │ │ │ ├── fractional_knapsack_test.go │ │ │ │ ├── max_capacity.go │ │ │ │ ├── max_capacity_test.go │ │ │ │ ├── max_product_cutting.go │ │ │ │ └── max_product_cutting_test.go │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.go │ │ │ │ ├── array_hash_map_test.go │ │ │ │ ├── hash_collision_test.go │ │ │ │ ├── hash_map_chaining.go │ │ │ │ ├── hash_map_open_addressing.go │ │ │ │ ├── hash_map_test.go │ │ │ │ └── simple_hash.go │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.go │ │ │ │ ├── heap_test.go │ │ │ │ ├── my_heap.go │ │ │ │ └── top_k.go │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.go │ │ │ │ ├── binary_search_edge.go │ │ │ │ ├── binary_search_insertion.go │ │ │ │ ├── binary_search_test.go │ │ │ │ ├── hashing_search.go │ │ │ │ ├── hashing_search_test.go │ │ │ │ ├── linear_search.go │ │ │ │ ├── linear_search_test.go │ │ │ │ ├── two_sum.go │ │ │ │ └── two_sum_test.go │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.go │ │ │ │ ├── bubble_sort_test.go │ │ │ │ ├── bucket_sort.go │ │ │ │ ├── bucket_sort_test.go │ │ │ │ ├── counting_sort.go │ │ │ │ ├── counting_sort_test.go │ │ │ │ ├── heap_sort.go │ │ │ │ ├── heap_sort_test.go │ │ │ │ ├── insertion_sort.go │ │ │ │ ├── insertion_sort_test.go │ │ │ │ ├── merge_sort.go │ │ │ │ ├── merge_sort_test.go │ │ │ │ ├── quick_sort.go │ │ │ │ ├── quick_sort_test.go │ │ │ │ ├── radix_sort.go │ │ │ │ ├── radix_sort_test.go │ │ │ │ ├── selection_sort.go │ │ │ │ └── selection_sort_test.go │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.go │ │ │ │ ├── array_queue.go │ │ │ │ ├── array_stack.go │ │ │ │ ├── deque_test.go │ │ │ │ ├── linkedlist_deque.go │ │ │ │ ├── linkedlist_queue.go │ │ │ │ ├── linkedlist_stack.go │ │ │ │ ├── queue_test.go │ │ │ │ └── stack_test.go │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.go │ │ │ │ ├── array_binary_tree_test.go │ │ │ │ ├── avl_tree.go │ │ │ │ ├── avl_tree_test.go │ │ │ │ ├── binary_search_tree.go │ │ │ │ ├── binary_search_tree_test.go │ │ │ │ ├── binary_tree_bfs.go │ │ │ │ ├── binary_tree_bfs_test.go │ │ │ │ ├── binary_tree_dfs.go │ │ │ │ ├── binary_tree_dfs_test.go │ │ │ │ └── binary_tree_test.go │ │ │ ├── go.mod │ │ │ └── pkg/ │ │ │ ├── list_node.go │ │ │ ├── list_node_test.go │ │ │ ├── print_utils.go │ │ │ ├── tree_node.go │ │ │ ├── tree_node_test.go │ │ │ └── vertex.go │ │ ├── java/ │ │ │ ├── .gitignore │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.java │ │ │ │ ├── linked_list.java │ │ │ │ ├── list.java │ │ │ │ └── my_list.java │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.java │ │ │ │ ├── permutations_i.java │ │ │ │ ├── permutations_ii.java │ │ │ │ ├── preorder_traversal_i_compact.java │ │ │ │ ├── preorder_traversal_ii_compact.java │ │ │ │ ├── preorder_traversal_iii_compact.java │ │ │ │ ├── preorder_traversal_iii_template.java │ │ │ │ ├── subset_sum_i.java │ │ │ │ ├── subset_sum_i_naive.java │ │ │ │ └── subset_sum_ii.java │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.java │ │ │ │ ├── recursion.java │ │ │ │ ├── space_complexity.java │ │ │ │ ├── time_complexity.java │ │ │ │ └── worst_best_time_complexity.java │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.java │ │ │ │ ├── build_tree.java │ │ │ │ └── hanota.java │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.java │ │ │ │ ├── climbing_stairs_constraint_dp.java │ │ │ │ ├── climbing_stairs_dfs.java │ │ │ │ ├── climbing_stairs_dfs_mem.java │ │ │ │ ├── climbing_stairs_dp.java │ │ │ │ ├── coin_change.java │ │ │ │ ├── coin_change_ii.java │ │ │ │ ├── edit_distance.java │ │ │ │ ├── knapsack.java │ │ │ │ ├── min_cost_climbing_stairs_dp.java │ │ │ │ ├── min_path_sum.java │ │ │ │ └── unbounded_knapsack.java │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.java │ │ │ │ ├── graph_adjacency_matrix.java │ │ │ │ ├── graph_bfs.java │ │ │ │ └── graph_dfs.java │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.java │ │ │ │ ├── fractional_knapsack.java │ │ │ │ ├── max_capacity.java │ │ │ │ └── max_product_cutting.java │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.java │ │ │ │ ├── built_in_hash.java │ │ │ │ ├── hash_map.java │ │ │ │ ├── hash_map_chaining.java │ │ │ │ ├── hash_map_open_addressing.java │ │ │ │ └── simple_hash.java │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.java │ │ │ │ ├── my_heap.java │ │ │ │ └── top_k.java │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.java │ │ │ │ ├── binary_search_edge.java │ │ │ │ ├── binary_search_insertion.java │ │ │ │ ├── hashing_search.java │ │ │ │ ├── linear_search.java │ │ │ │ └── two_sum.java │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.java │ │ │ │ ├── bucket_sort.java │ │ │ │ ├── counting_sort.java │ │ │ │ ├── heap_sort.java │ │ │ │ ├── insertion_sort.java │ │ │ │ ├── merge_sort.java │ │ │ │ ├── quick_sort.java │ │ │ │ ├── radix_sort.java │ │ │ │ └── selection_sort.java │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.java │ │ │ │ ├── array_queue.java │ │ │ │ ├── array_stack.java │ │ │ │ ├── deque.java │ │ │ │ ├── linkedlist_deque.java │ │ │ │ ├── linkedlist_queue.java │ │ │ │ ├── linkedlist_stack.java │ │ │ │ ├── queue.java │ │ │ │ └── stack.java │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.java │ │ │ │ ├── avl_tree.java │ │ │ │ ├── binary_search_tree.java │ │ │ │ ├── binary_tree.java │ │ │ │ ├── binary_tree_bfs.java │ │ │ │ └── binary_tree_dfs.java │ │ │ └── utils/ │ │ │ ├── ListNode.java │ │ │ ├── PrintUtil.java │ │ │ ├── TreeNode.java │ │ │ └── Vertex.java │ │ ├── javascript/ │ │ │ ├── .prettierrc │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.js │ │ │ │ ├── linked_list.js │ │ │ │ ├── list.js │ │ │ │ └── my_list.js │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.js │ │ │ │ ├── permutations_i.js │ │ │ │ ├── permutations_ii.js │ │ │ │ ├── preorder_traversal_i_compact.js │ │ │ │ ├── preorder_traversal_ii_compact.js │ │ │ │ ├── preorder_traversal_iii_compact.js │ │ │ │ ├── preorder_traversal_iii_template.js │ │ │ │ ├── subset_sum_i.js │ │ │ │ ├── subset_sum_i_naive.js │ │ │ │ └── subset_sum_ii.js │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.js │ │ │ │ ├── recursion.js │ │ │ │ ├── space_complexity.js │ │ │ │ ├── time_complexity.js │ │ │ │ └── worst_best_time_complexity.js │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.js │ │ │ │ ├── build_tree.js │ │ │ │ └── hanota.js │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.js │ │ │ │ ├── climbing_stairs_constraint_dp.js │ │ │ │ ├── climbing_stairs_dfs.js │ │ │ │ ├── climbing_stairs_dfs_mem.js │ │ │ │ ├── climbing_stairs_dp.js │ │ │ │ ├── coin_change.js │ │ │ │ ├── coin_change_ii.js │ │ │ │ ├── edit_distance.js │ │ │ │ ├── knapsack.js │ │ │ │ ├── min_cost_climbing_stairs_dp.js │ │ │ │ ├── min_path_sum.js │ │ │ │ └── unbounded_knapsack.js │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.js │ │ │ │ ├── graph_adjacency_matrix.js │ │ │ │ ├── graph_bfs.js │ │ │ │ └── graph_dfs.js │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.js │ │ │ │ ├── fractional_knapsack.js │ │ │ │ ├── max_capacity.js │ │ │ │ └── max_product_cutting.js │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.js │ │ │ │ ├── hash_map.js │ │ │ │ ├── hash_map_chaining.js │ │ │ │ ├── hash_map_open_addressing.js │ │ │ │ └── simple_hash.js │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.js │ │ │ │ └── top_k.js │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.js │ │ │ │ ├── binary_search_edge.js │ │ │ │ ├── binary_search_insertion.js │ │ │ │ ├── hashing_search.js │ │ │ │ ├── linear_search.js │ │ │ │ └── two_sum.js │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.js │ │ │ │ ├── bucket_sort.js │ │ │ │ ├── counting_sort.js │ │ │ │ ├── heap_sort.js │ │ │ │ ├── insertion_sort.js │ │ │ │ ├── merge_sort.js │ │ │ │ ├── quick_sort.js │ │ │ │ ├── radix_sort.js │ │ │ │ └── selection_sort.js │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.js │ │ │ │ ├── array_queue.js │ │ │ │ ├── array_stack.js │ │ │ │ ├── deque.js │ │ │ │ ├── linkedlist_deque.js │ │ │ │ ├── linkedlist_queue.js │ │ │ │ ├── linkedlist_stack.js │ │ │ │ ├── queue.js │ │ │ │ └── stack.js │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.js │ │ │ │ ├── avl_tree.js │ │ │ │ ├── binary_search_tree.js │ │ │ │ ├── binary_tree.js │ │ │ │ ├── binary_tree_bfs.js │ │ │ │ └── binary_tree_dfs.js │ │ │ ├── modules/ │ │ │ │ ├── ListNode.js │ │ │ │ ├── PrintUtil.js │ │ │ │ ├── TreeNode.js │ │ │ │ └── Vertex.js │ │ │ └── test_all.js │ │ ├── kotlin/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.kt │ │ │ │ ├── linked_list.kt │ │ │ │ ├── list.kt │ │ │ │ └── my_list.kt │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.kt │ │ │ │ ├── permutations_i.kt │ │ │ │ ├── permutations_ii.kt │ │ │ │ ├── preorder_traversal_i_compact.kt │ │ │ │ ├── preorder_traversal_ii_compact.kt │ │ │ │ ├── preorder_traversal_iii_compact.kt │ │ │ │ ├── preorder_traversal_iii_template.kt │ │ │ │ ├── subset_sum_i.kt │ │ │ │ ├── subset_sum_i_naive.kt │ │ │ │ └── subset_sum_ii.kt │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.kt │ │ │ │ ├── recursion.kt │ │ │ │ ├── space_complexity.kt │ │ │ │ ├── time_complexity.kt │ │ │ │ └── worst_best_time_complexity.kt │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.kt │ │ │ │ ├── build_tree.kt │ │ │ │ └── hanota.kt │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.kt │ │ │ │ ├── climbing_stairs_constraint_dp.kt │ │ │ │ ├── climbing_stairs_dfs.kt │ │ │ │ ├── climbing_stairs_dfs_mem.kt │ │ │ │ ├── climbing_stairs_dp.kt │ │ │ │ ├── coin_change.kt │ │ │ │ ├── coin_change_ii.kt │ │ │ │ ├── edit_distance.kt │ │ │ │ ├── knapsack.kt │ │ │ │ ├── min_cost_climbing_stairs_dp.kt │ │ │ │ ├── min_path_sum.kt │ │ │ │ └── unbounded_knapsack.kt │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.kt │ │ │ │ ├── graph_adjacency_matrix.kt │ │ │ │ ├── graph_bfs.kt │ │ │ │ └── graph_dfs.kt │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.kt │ │ │ │ ├── fractional_knapsack.kt │ │ │ │ ├── max_capacity.kt │ │ │ │ └── max_product_cutting.kt │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.kt │ │ │ │ ├── built_in_hash.kt │ │ │ │ ├── hash_map.kt │ │ │ │ ├── hash_map_chaining.kt │ │ │ │ ├── hash_map_open_addressing.kt │ │ │ │ └── simple_hash.kt │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.kt │ │ │ │ ├── my_heap.kt │ │ │ │ └── top_k.kt │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.kt │ │ │ │ ├── binary_search_edge.kt │ │ │ │ ├── binary_search_insertion.kt │ │ │ │ ├── hashing_search.kt │ │ │ │ ├── linear_search.kt │ │ │ │ └── two_sum.kt │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.kt │ │ │ │ ├── bucket_sort.kt │ │ │ │ ├── counting_sort.kt │ │ │ │ ├── heap_sort.kt │ │ │ │ ├── insertion_sort.kt │ │ │ │ ├── merge_sort.kt │ │ │ │ ├── quick_sort.kt │ │ │ │ ├── radix_sort.kt │ │ │ │ └── selection_sort.kt │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.kt │ │ │ │ ├── array_queue.kt │ │ │ │ ├── array_stack.kt │ │ │ │ ├── deque.kt │ │ │ │ ├── linkedlist_deque.kt │ │ │ │ ├── linkedlist_queue.kt │ │ │ │ ├── linkedlist_stack.kt │ │ │ │ ├── queue.kt │ │ │ │ └── stack.kt │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.kt │ │ │ │ ├── avl_tree.kt │ │ │ │ ├── binary_search_tree.kt │ │ │ │ ├── binary_tree.kt │ │ │ │ ├── binary_tree_bfs.kt │ │ │ │ └── binary_tree_dfs.kt │ │ │ └── utils/ │ │ │ ├── ListNode.kt │ │ │ ├── PrintUtil.kt │ │ │ ├── TreeNode.kt │ │ │ └── Vertex.kt │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.py │ │ │ │ ├── linked_list.py │ │ │ │ ├── list.py │ │ │ │ └── my_list.py │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.py │ │ │ │ ├── permutations_i.py │ │ │ │ ├── permutations_ii.py │ │ │ │ ├── preorder_traversal_i_compact.py │ │ │ │ ├── preorder_traversal_ii_compact.py │ │ │ │ ├── preorder_traversal_iii_compact.py │ │ │ │ ├── preorder_traversal_iii_template.py │ │ │ │ ├── subset_sum_i.py │ │ │ │ ├── subset_sum_i_naive.py │ │ │ │ └── subset_sum_ii.py │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.py │ │ │ │ ├── recursion.py │ │ │ │ ├── space_complexity.py │ │ │ │ ├── time_complexity.py │ │ │ │ └── worst_best_time_complexity.py │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.py │ │ │ │ ├── build_tree.py │ │ │ │ └── hanota.py │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.py │ │ │ │ ├── climbing_stairs_constraint_dp.py │ │ │ │ ├── climbing_stairs_dfs.py │ │ │ │ ├── climbing_stairs_dfs_mem.py │ │ │ │ ├── climbing_stairs_dp.py │ │ │ │ ├── coin_change.py │ │ │ │ ├── coin_change_ii.py │ │ │ │ ├── edit_distance.py │ │ │ │ ├── knapsack.py │ │ │ │ ├── min_cost_climbing_stairs_dp.py │ │ │ │ ├── min_path_sum.py │ │ │ │ └── unbounded_knapsack.py │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.py │ │ │ │ ├── graph_adjacency_matrix.py │ │ │ │ ├── graph_bfs.py │ │ │ │ └── graph_dfs.py │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.py │ │ │ │ ├── fractional_knapsack.py │ │ │ │ ├── max_capacity.py │ │ │ │ └── max_product_cutting.py │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.py │ │ │ │ ├── built_in_hash.py │ │ │ │ ├── hash_map.py │ │ │ │ ├── hash_map_chaining.py │ │ │ │ ├── hash_map_open_addressing.py │ │ │ │ └── simple_hash.py │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.py │ │ │ │ ├── my_heap.py │ │ │ │ └── top_k.py │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.py │ │ │ │ ├── binary_search_edge.py │ │ │ │ ├── binary_search_insertion.py │ │ │ │ ├── hashing_search.py │ │ │ │ ├── linear_search.py │ │ │ │ └── two_sum.py │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.py │ │ │ │ ├── bucket_sort.py │ │ │ │ ├── counting_sort.py │ │ │ │ ├── heap_sort.py │ │ │ │ ├── insertion_sort.py │ │ │ │ ├── merge_sort.py │ │ │ │ ├── quick_sort.py │ │ │ │ ├── radix_sort.py │ │ │ │ └── selection_sort.py │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.py │ │ │ │ ├── array_queue.py │ │ │ │ ├── array_stack.py │ │ │ │ ├── deque.py │ │ │ │ ├── linkedlist_deque.py │ │ │ │ ├── linkedlist_queue.py │ │ │ │ ├── linkedlist_stack.py │ │ │ │ ├── queue.py │ │ │ │ └── stack.py │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.py │ │ │ │ ├── avl_tree.py │ │ │ │ ├── binary_search_tree.py │ │ │ │ ├── binary_tree.py │ │ │ │ ├── binary_tree_bfs.py │ │ │ │ └── binary_tree_dfs.py │ │ │ ├── modules/ │ │ │ │ ├── __init__.py │ │ │ │ ├── list_node.py │ │ │ │ ├── print_util.py │ │ │ │ ├── tree_node.py │ │ │ │ └── vertex.py │ │ │ └── test_all.py │ │ ├── ruby/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.rb │ │ │ │ ├── linked_list.rb │ │ │ │ ├── list.rb │ │ │ │ └── my_list.rb │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.rb │ │ │ │ ├── permutations_i.rb │ │ │ │ ├── permutations_ii.rb │ │ │ │ ├── preorder_traversal_i_compact.rb │ │ │ │ ├── preorder_traversal_ii_compact.rb │ │ │ │ ├── preorder_traversal_iii_compact.rb │ │ │ │ ├── preorder_traversal_iii_template.rb │ │ │ │ ├── subset_sum_i.rb │ │ │ │ ├── subset_sum_i_naive.rb │ │ │ │ └── subset_sum_ii.rb │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.rb │ │ │ │ ├── recursion.rb │ │ │ │ ├── space_complexity.rb │ │ │ │ ├── time_complexity.rb │ │ │ │ └── worst_best_time_complexity.rb │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.rb │ │ │ │ ├── build_tree.rb │ │ │ │ └── hanota.rb │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.rb │ │ │ │ ├── climbing_stairs_constraint_dp.rb │ │ │ │ ├── climbing_stairs_dfs.rb │ │ │ │ ├── climbing_stairs_dfs_mem.rb │ │ │ │ ├── climbing_stairs_dp.rb │ │ │ │ ├── coin_change.rb │ │ │ │ ├── coin_change_ii.rb │ │ │ │ ├── edit_distance.rb │ │ │ │ ├── knapsack.rb │ │ │ │ ├── min_cost_climbing_stairs_dp.rb │ │ │ │ ├── min_path_sum.rb │ │ │ │ └── unbounded_knapsack.rb │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.rb │ │ │ │ ├── graph_adjacency_matrix.rb │ │ │ │ ├── graph_bfs.rb │ │ │ │ └── graph_dfs.rb │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.rb │ │ │ │ ├── fractional_knapsack.rb │ │ │ │ ├── max_capacity.rb │ │ │ │ └── max_product_cutting.rb │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.rb │ │ │ │ ├── built_in_hash.rb │ │ │ │ ├── hash_map.rb │ │ │ │ ├── hash_map_chaining.rb │ │ │ │ ├── hash_map_open_addressing.rb │ │ │ │ └── simple_hash.rb │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.rb │ │ │ │ └── top_k.rb │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.rb │ │ │ │ ├── binary_search_edge.rb │ │ │ │ ├── binary_search_insertion.rb │ │ │ │ ├── hashing_search.rb │ │ │ │ ├── linear_search.rb │ │ │ │ └── two_sum.rb │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.rb │ │ │ │ ├── bucket_sort.rb │ │ │ │ ├── counting_sort.rb │ │ │ │ ├── heap_sort.rb │ │ │ │ ├── insertion_sort.rb │ │ │ │ ├── merge_sort.rb │ │ │ │ ├── quick_sort.rb │ │ │ │ ├── radix_sort.rb │ │ │ │ └── selection_sort.rb │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.rb │ │ │ │ ├── array_queue.rb │ │ │ │ ├── array_stack.rb │ │ │ │ ├── deque.rb │ │ │ │ ├── linkedlist_deque.rb │ │ │ │ ├── linkedlist_queue.rb │ │ │ │ ├── linkedlist_stack.rb │ │ │ │ ├── queue.rb │ │ │ │ └── stack.rb │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.rb │ │ │ │ ├── avl_tree.rb │ │ │ │ ├── binary_search_tree.rb │ │ │ │ ├── binary_tree.rb │ │ │ │ ├── binary_tree_bfs.rb │ │ │ │ └── binary_tree_dfs.rb │ │ │ ├── test_all.rb │ │ │ └── utils/ │ │ │ ├── list_node.rb │ │ │ ├── print_util.rb │ │ │ ├── tree_node.rb │ │ │ └── vertex.rb │ │ ├── rust/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.rs │ │ │ │ ├── linked_list.rs │ │ │ │ ├── list.rs │ │ │ │ └── my_list.rs │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.rs │ │ │ │ ├── permutations_i.rs │ │ │ │ ├── permutations_ii.rs │ │ │ │ ├── preorder_traversal_i_compact.rs │ │ │ │ ├── preorder_traversal_ii_compact.rs │ │ │ │ ├── preorder_traversal_iii_compact.rs │ │ │ │ ├── preorder_traversal_iii_template.rs │ │ │ │ ├── subset_sum_i.rs │ │ │ │ ├── subset_sum_i_naive.rs │ │ │ │ └── subset_sum_ii.rs │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.rs │ │ │ │ ├── recursion.rs │ │ │ │ ├── space_complexity.rs │ │ │ │ ├── time_complexity.rs │ │ │ │ └── worst_best_time_complexity.rs │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.rs │ │ │ │ ├── build_tree.rs │ │ │ │ └── hanota.rs │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.rs │ │ │ │ ├── climbing_stairs_constraint_dp.rs │ │ │ │ ├── climbing_stairs_dfs.rs │ │ │ │ ├── climbing_stairs_dfs_mem.rs │ │ │ │ ├── climbing_stairs_dp.rs │ │ │ │ ├── coin_change.rs │ │ │ │ ├── coin_change_ii.rs │ │ │ │ ├── edit_distance.rs │ │ │ │ ├── knapsack.rs │ │ │ │ ├── min_cost_climbing_stairs_dp.rs │ │ │ │ ├── min_path_sum.rs │ │ │ │ └── unbounded_knapsack.rs │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.rs │ │ │ │ ├── graph_adjacency_matrix.rs │ │ │ │ ├── graph_bfs.rs │ │ │ │ └── graph_dfs.rs │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.rs │ │ │ │ ├── fractional_knapsack.rs │ │ │ │ ├── max_capacity.rs │ │ │ │ └── max_product_cutting.rs │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.rs │ │ │ │ ├── build_in_hash.rs │ │ │ │ ├── hash_map.rs │ │ │ │ ├── hash_map_chaining.rs │ │ │ │ ├── hash_map_open_addressing.rs │ │ │ │ └── simple_hash.rs │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.rs │ │ │ │ ├── my_heap.rs │ │ │ │ └── top_k.rs │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.rs │ │ │ │ ├── binary_search_edge.rs │ │ │ │ ├── binary_search_insertion.rs │ │ │ │ ├── hashing_search.rs │ │ │ │ ├── linear_search.rs │ │ │ │ └── two_sum.rs │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.rs │ │ │ │ ├── bucket_sort.rs │ │ │ │ ├── counting_sort.rs │ │ │ │ ├── heap_sort.rs │ │ │ │ ├── insertion_sort.rs │ │ │ │ ├── merge_sort.rs │ │ │ │ ├── quick_sort.rs │ │ │ │ ├── radix_sort.rs │ │ │ │ └── selection_sort.rs │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.rs │ │ │ │ ├── array_queue.rs │ │ │ │ ├── array_stack.rs │ │ │ │ ├── deque.rs │ │ │ │ ├── linkedlist_deque.rs │ │ │ │ ├── linkedlist_queue.rs │ │ │ │ ├── linkedlist_stack.rs │ │ │ │ ├── queue.rs │ │ │ │ └── stack.rs │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.rs │ │ │ │ ├── avl_tree.rs │ │ │ │ ├── binary_search_tree.rs │ │ │ │ ├── binary_tree.rs │ │ │ │ ├── binary_tree_bfs.rs │ │ │ │ └── binary_tree_dfs.rs │ │ │ └── src/ │ │ │ ├── include/ │ │ │ │ ├── list_node.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── print_util.rs │ │ │ │ ├── tree_node.rs │ │ │ │ └── vertex.rs │ │ │ └── lib.rs │ │ ├── swift/ │ │ │ ├── .gitignore │ │ │ ├── Package.resolved │ │ │ ├── Package.swift │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.swift │ │ │ │ ├── linked_list.swift │ │ │ │ ├── list.swift │ │ │ │ └── my_list.swift │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.swift │ │ │ │ ├── permutations_i.swift │ │ │ │ ├── permutations_ii.swift │ │ │ │ ├── preorder_traversal_i_compact.swift │ │ │ │ ├── preorder_traversal_ii_compact.swift │ │ │ │ ├── preorder_traversal_iii_compact.swift │ │ │ │ ├── preorder_traversal_iii_template.swift │ │ │ │ ├── subset_sum_i.swift │ │ │ │ ├── subset_sum_i_naive.swift │ │ │ │ └── subset_sum_ii.swift │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.swift │ │ │ │ ├── recursion.swift │ │ │ │ ├── space_complexity.swift │ │ │ │ ├── time_complexity.swift │ │ │ │ └── worst_best_time_complexity.swift │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.swift │ │ │ │ ├── build_tree.swift │ │ │ │ └── hanota.swift │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.swift │ │ │ │ ├── climbing_stairs_constraint_dp.swift │ │ │ │ ├── climbing_stairs_dfs.swift │ │ │ │ ├── climbing_stairs_dfs_mem.swift │ │ │ │ ├── climbing_stairs_dp.swift │ │ │ │ ├── coin_change.swift │ │ │ │ ├── coin_change_ii.swift │ │ │ │ ├── edit_distance.swift │ │ │ │ ├── knapsack.swift │ │ │ │ ├── min_cost_climbing_stairs_dp.swift │ │ │ │ ├── min_path_sum.swift │ │ │ │ └── unbounded_knapsack.swift │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.swift │ │ │ │ ├── graph_adjacency_list_target.swift │ │ │ │ ├── graph_adjacency_matrix.swift │ │ │ │ ├── graph_bfs.swift │ │ │ │ └── graph_dfs.swift │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.swift │ │ │ │ ├── fractional_knapsack.swift │ │ │ │ ├── max_capacity.swift │ │ │ │ └── max_product_cutting.swift │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.swift │ │ │ │ ├── built_in_hash.swift │ │ │ │ ├── hash_map.swift │ │ │ │ ├── hash_map_chaining.swift │ │ │ │ ├── hash_map_open_addressing.swift │ │ │ │ └── simple_hash.swift │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.swift │ │ │ │ ├── my_heap.swift │ │ │ │ └── top_k.swift │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.swift │ │ │ │ ├── binary_search_edge.swift │ │ │ │ ├── binary_search_insertion.swift │ │ │ │ ├── binary_search_insertion_target.swift │ │ │ │ ├── hashing_search.swift │ │ │ │ ├── linear_search.swift │ │ │ │ └── two_sum.swift │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.swift │ │ │ │ ├── bucket_sort.swift │ │ │ │ ├── counting_sort.swift │ │ │ │ ├── heap_sort.swift │ │ │ │ ├── insertion_sort.swift │ │ │ │ ├── merge_sort.swift │ │ │ │ ├── quick_sort.swift │ │ │ │ ├── radix_sort.swift │ │ │ │ └── selection_sort.swift │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.swift │ │ │ │ ├── array_queue.swift │ │ │ │ ├── array_stack.swift │ │ │ │ ├── deque.swift │ │ │ │ ├── linkedlist_deque.swift │ │ │ │ ├── linkedlist_queue.swift │ │ │ │ ├── linkedlist_stack.swift │ │ │ │ ├── queue.swift │ │ │ │ └── stack.swift │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.swift │ │ │ │ ├── avl_tree.swift │ │ │ │ ├── binary_search_tree.swift │ │ │ │ ├── binary_tree.swift │ │ │ │ ├── binary_tree_bfs.swift │ │ │ │ └── binary_tree_dfs.swift │ │ │ └── utils/ │ │ │ ├── ListNode.swift │ │ │ ├── Pair.swift │ │ │ ├── PrintUtil.swift │ │ │ ├── TreeNode.swift │ │ │ └── Vertex.swift │ │ └── typescript/ │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.ts │ │ │ ├── linked_list.ts │ │ │ ├── list.ts │ │ │ └── my_list.ts │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.ts │ │ │ ├── permutations_i.ts │ │ │ ├── permutations_ii.ts │ │ │ ├── preorder_traversal_i_compact.ts │ │ │ ├── preorder_traversal_ii_compact.ts │ │ │ ├── preorder_traversal_iii_compact.ts │ │ │ ├── preorder_traversal_iii_template.ts │ │ │ ├── subset_sum_i.ts │ │ │ ├── subset_sum_i_naive.ts │ │ │ └── subset_sum_ii.ts │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.ts │ │ │ ├── recursion.ts │ │ │ ├── space_complexity.ts │ │ │ ├── time_complexity.ts │ │ │ └── worst_best_time_complexity.ts │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.ts │ │ │ ├── build_tree.ts │ │ │ └── hanota.ts │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.ts │ │ │ ├── climbing_stairs_constraint_dp.ts │ │ │ ├── climbing_stairs_dfs.ts │ │ │ ├── climbing_stairs_dfs_mem.ts │ │ │ ├── climbing_stairs_dp.ts │ │ │ ├── coin_change.ts │ │ │ ├── coin_change_ii.ts │ │ │ ├── edit_distance.ts │ │ │ ├── knapsack.ts │ │ │ ├── min_cost_climbing_stairs_dp.ts │ │ │ ├── min_path_sum.ts │ │ │ └── unbounded_knapsack.ts │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.ts │ │ │ ├── graph_adjacency_matrix.ts │ │ │ ├── graph_bfs.ts │ │ │ └── graph_dfs.ts │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.ts │ │ │ ├── fractional_knapsack.ts │ │ │ ├── max_capacity.ts │ │ │ └── max_product_cutting.ts │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.ts │ │ │ ├── hash_map.ts │ │ │ ├── hash_map_chaining.ts │ │ │ ├── hash_map_open_addressing.ts │ │ │ └── simple_hash.ts │ │ ├── chapter_heap/ │ │ │ ├── my_heap.ts │ │ │ └── top_k.ts │ │ ├── chapter_searching/ │ │ │ ├── binary_search.ts │ │ │ ├── binary_search_edge.ts │ │ │ ├── binary_search_insertion.ts │ │ │ ├── hashing_search.ts │ │ │ ├── linear_search.ts │ │ │ └── two_sum.ts │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.ts │ │ │ ├── bucket_sort.ts │ │ │ ├── counting_sort.ts │ │ │ ├── heap_sort.ts │ │ │ ├── insertion_sort.ts │ │ │ ├── merge_sort.ts │ │ │ ├── quick_sort.ts │ │ │ ├── radix_sort.ts │ │ │ └── selection_sort.ts │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.ts │ │ │ ├── array_queue.ts │ │ │ ├── array_stack.ts │ │ │ ├── deque.ts │ │ │ ├── linkedlist_deque.ts │ │ │ ├── linkedlist_queue.ts │ │ │ ├── linkedlist_stack.ts │ │ │ ├── queue.ts │ │ │ └── stack.ts │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.ts │ │ │ ├── avl_tree.ts │ │ │ ├── binary_search_tree.ts │ │ │ ├── binary_tree.ts │ │ │ ├── binary_tree_bfs.ts │ │ │ └── binary_tree_dfs.ts │ │ ├── modules/ │ │ │ ├── ListNode.ts │ │ │ ├── PrintUtil.ts │ │ │ ├── TreeNode.ts │ │ │ └── Vertex.ts │ │ ├── package.json │ │ └── tsconfig.json │ ├── docs/ │ │ ├── chapter_appendix/ │ │ │ ├── contribution.md │ │ │ ├── index.md │ │ │ ├── installation.md │ │ │ └── terminology.md │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.md │ │ │ ├── index.md │ │ │ ├── linked_list.md │ │ │ ├── list.md │ │ │ ├── ram_and_cache.md │ │ │ └── summary.md │ │ ├── chapter_backtracking/ │ │ │ ├── backtracking_algorithm.md │ │ │ ├── index.md │ │ │ ├── n_queens_problem.md │ │ │ ├── permutations_problem.md │ │ │ ├── subset_sum_problem.md │ │ │ └── summary.md │ │ ├── chapter_computational_complexity/ │ │ │ ├── index.md │ │ │ ├── iteration_and_recursion.md │ │ │ ├── performance_evaluation.md │ │ │ ├── space_complexity.md │ │ │ ├── summary.md │ │ │ └── time_complexity.md │ │ ├── chapter_data_structure/ │ │ │ ├── basic_data_types.md │ │ │ ├── character_encoding.md │ │ │ ├── classification_of_data_structure.md │ │ │ ├── index.md │ │ │ ├── number_encoding.md │ │ │ └── summary.md │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.md │ │ │ ├── build_binary_tree_problem.md │ │ │ ├── divide_and_conquer.md │ │ │ ├── hanota_problem.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_dynamic_programming/ │ │ │ ├── dp_problem_features.md │ │ │ ├── dp_solution_pipeline.md │ │ │ ├── edit_distance_problem.md │ │ │ ├── index.md │ │ │ ├── intro_to_dynamic_programming.md │ │ │ ├── knapsack_problem.md │ │ │ ├── summary.md │ │ │ └── unbounded_knapsack_problem.md │ │ ├── chapter_graph/ │ │ │ ├── graph.md │ │ │ ├── graph_operations.md │ │ │ ├── graph_traversal.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_greedy/ │ │ │ ├── fractional_knapsack_problem.md │ │ │ ├── greedy_algorithm.md │ │ │ ├── index.md │ │ │ ├── max_capacity_problem.md │ │ │ ├── max_product_cutting_problem.md │ │ │ └── summary.md │ │ ├── chapter_hashing/ │ │ │ ├── hash_algorithm.md │ │ │ ├── hash_collision.md │ │ │ ├── hash_map.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_heap/ │ │ │ ├── build_heap.md │ │ │ ├── heap.md │ │ │ ├── index.md │ │ │ ├── summary.md │ │ │ └── top_k.md │ │ ├── chapter_hello_algo/ │ │ │ └── index.md │ │ ├── chapter_introduction/ │ │ │ ├── algorithms_are_everywhere.md │ │ │ ├── index.md │ │ │ ├── summary.md │ │ │ └── what_is_dsa.md │ │ ├── chapter_preface/ │ │ │ ├── about_the_book.md │ │ │ ├── index.md │ │ │ ├── suggestions.md │ │ │ └── summary.md │ │ ├── chapter_reference/ │ │ │ └── index.md │ │ ├── chapter_searching/ │ │ │ ├── binary_search.md │ │ │ ├── binary_search_edge.md │ │ │ ├── binary_search_insertion.md │ │ │ ├── index.md │ │ │ ├── replace_linear_by_hashing.md │ │ │ ├── searching_algorithm_revisited.md │ │ │ └── summary.md │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.md │ │ │ ├── bucket_sort.md │ │ │ ├── counting_sort.md │ │ │ ├── heap_sort.md │ │ │ ├── index.md │ │ │ ├── insertion_sort.md │ │ │ ├── merge_sort.md │ │ │ ├── quick_sort.md │ │ │ ├── radix_sort.md │ │ │ ├── selection_sort.md │ │ │ ├── sorting_algorithm.md │ │ │ └── summary.md │ │ ├── chapter_stack_and_queue/ │ │ │ ├── deque.md │ │ │ ├── index.md │ │ │ ├── queue.md │ │ │ ├── stack.md │ │ │ └── summary.md │ │ ├── chapter_tree/ │ │ │ ├── array_representation_of_tree.md │ │ │ ├── avl_tree.md │ │ │ ├── binary_search_tree.md │ │ │ ├── binary_tree.md │ │ │ ├── binary_tree_traversal.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── index.html │ │ └── index.md │ └── mkdocs.yml ├── giscus.json ├── ja/ │ ├── README.md │ ├── codes/ │ │ ├── c/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array.c │ │ │ │ ├── linked_list.c │ │ │ │ └── my_list.c │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── n_queens.c │ │ │ │ ├── permutations_i.c │ │ │ │ ├── permutations_ii.c │ │ │ │ ├── preorder_traversal_i_compact.c │ │ │ │ ├── preorder_traversal_ii_compact.c │ │ │ │ ├── preorder_traversal_iii_compact.c │ │ │ │ ├── preorder_traversal_iii_template.c │ │ │ │ ├── subset_sum_i.c │ │ │ │ ├── subset_sum_i_naive.c │ │ │ │ └── subset_sum_ii.c │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── iteration.c │ │ │ │ ├── recursion.c │ │ │ │ ├── space_complexity.c │ │ │ │ ├── time_complexity.c │ │ │ │ └── worst_best_time_complexity.c │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search_recur.c │ │ │ │ ├── build_tree.c │ │ │ │ └── hanota.c │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── climbing_stairs_backtrack.c │ │ │ │ ├── climbing_stairs_constraint_dp.c │ │ │ │ ├── climbing_stairs_dfs.c │ │ │ │ ├── climbing_stairs_dfs_mem.c │ │ │ │ ├── climbing_stairs_dp.c │ │ │ │ ├── coin_change.c │ │ │ │ ├── coin_change_ii.c │ │ │ │ ├── edit_distance.c │ │ │ │ ├── knapsack.c │ │ │ │ ├── min_cost_climbing_stairs_dp.c │ │ │ │ ├── min_path_sum.c │ │ │ │ └── unbounded_knapsack.c │ │ │ ├── chapter_graph/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── graph_adjacency_list.c │ │ │ │ ├── graph_adjacency_list_test.c │ │ │ │ ├── graph_adjacency_matrix.c │ │ │ │ ├── graph_bfs.c │ │ │ │ └── graph_dfs.c │ │ │ ├── chapter_greedy/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── coin_change_greedy.c │ │ │ │ ├── fractional_knapsack.c │ │ │ │ ├── max_capacity.c │ │ │ │ └── max_product_cutting.c │ │ │ ├── chapter_hashing/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_hash_map.c │ │ │ │ ├── hash_map_chaining.c │ │ │ │ ├── hash_map_open_addressing.c │ │ │ │ └── simple_hash.c │ │ │ ├── chapter_heap/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── my_heap.c │ │ │ │ ├── my_heap_test.c │ │ │ │ └── top_k.c │ │ │ ├── chapter_searching/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search.c │ │ │ │ ├── binary_search_edge.c │ │ │ │ ├── binary_search_insertion.c │ │ │ │ └── two_sum.c │ │ │ ├── chapter_sorting/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bubble_sort.c │ │ │ │ ├── bucket_sort.c │ │ │ │ ├── counting_sort.c │ │ │ │ ├── heap_sort.c │ │ │ │ ├── insertion_sort.c │ │ │ │ ├── merge_sort.c │ │ │ │ ├── quick_sort.c │ │ │ │ ├── radix_sort.c │ │ │ │ └── selection_sort.c │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_deque.c │ │ │ │ ├── array_queue.c │ │ │ │ ├── array_stack.c │ │ │ │ ├── linkedlist_deque.c │ │ │ │ ├── linkedlist_queue.c │ │ │ │ └── linkedlist_stack.c │ │ │ ├── chapter_tree/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_binary_tree.c │ │ │ │ ├── avl_tree.c │ │ │ │ ├── binary_search_tree.c │ │ │ │ ├── binary_tree.c │ │ │ │ ├── binary_tree_bfs.c │ │ │ │ └── binary_tree_dfs.c │ │ │ └── utils/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.h │ │ │ ├── common_test.c │ │ │ ├── list_node.h │ │ │ ├── print_util.h │ │ │ ├── tree_node.h │ │ │ ├── uthash.h │ │ │ ├── vector.h │ │ │ └── vertex.h │ │ ├── cpp/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array.cpp │ │ │ │ ├── linked_list.cpp │ │ │ │ ├── list.cpp │ │ │ │ └── my_list.cpp │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── n_queens.cpp │ │ │ │ ├── permutations_i.cpp │ │ │ │ ├── permutations_ii.cpp │ │ │ │ ├── preorder_traversal_i_compact.cpp │ │ │ │ ├── preorder_traversal_ii_compact.cpp │ │ │ │ ├── preorder_traversal_iii_compact.cpp │ │ │ │ ├── preorder_traversal_iii_template.cpp │ │ │ │ ├── subset_sum_i.cpp │ │ │ │ ├── subset_sum_i_naive.cpp │ │ │ │ └── subset_sum_ii.cpp │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── iteration.cpp │ │ │ │ ├── recursion.cpp │ │ │ │ ├── space_complexity.cpp │ │ │ │ ├── time_complexity.cpp │ │ │ │ └── worst_best_time_complexity.cpp │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search_recur.cpp │ │ │ │ ├── build_tree.cpp │ │ │ │ └── hanota.cpp │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── climbing_stairs_backtrack.cpp │ │ │ │ ├── climbing_stairs_constraint_dp.cpp │ │ │ │ ├── climbing_stairs_dfs.cpp │ │ │ │ ├── climbing_stairs_dfs_mem.cpp │ │ │ │ ├── climbing_stairs_dp.cpp │ │ │ │ ├── coin_change.cpp │ │ │ │ ├── coin_change_ii.cpp │ │ │ │ ├── edit_distance.cpp │ │ │ │ ├── knapsack.cpp │ │ │ │ ├── min_cost_climbing_stairs_dp.cpp │ │ │ │ ├── min_path_sum.cpp │ │ │ │ └── unbounded_knapsack.cpp │ │ │ ├── chapter_graph/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── graph_adjacency_list.cpp │ │ │ │ ├── graph_adjacency_list_test.cpp │ │ │ │ ├── graph_adjacency_matrix.cpp │ │ │ │ ├── graph_bfs.cpp │ │ │ │ └── graph_dfs.cpp │ │ │ ├── chapter_greedy/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── coin_change_greedy.cpp │ │ │ │ ├── fractional_knapsack.cpp │ │ │ │ ├── max_capacity.cpp │ │ │ │ └── max_product_cutting.cpp │ │ │ ├── chapter_hashing/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_hash_map.cpp │ │ │ │ ├── array_hash_map_test.cpp │ │ │ │ ├── built_in_hash.cpp │ │ │ │ ├── hash_map.cpp │ │ │ │ ├── hash_map_chaining.cpp │ │ │ │ ├── hash_map_open_addressing.cpp │ │ │ │ └── simple_hash.cpp │ │ │ ├── chapter_heap/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── heap.cpp │ │ │ │ ├── my_heap.cpp │ │ │ │ └── top_k.cpp │ │ │ ├── chapter_searching/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search.cpp │ │ │ │ ├── binary_search_edge.cpp │ │ │ │ ├── binary_search_insertion.cpp │ │ │ │ ├── hashing_search.cpp │ │ │ │ ├── linear_search.cpp │ │ │ │ └── two_sum.cpp │ │ │ ├── chapter_sorting/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bubble_sort.cpp │ │ │ │ ├── bucket_sort.cpp │ │ │ │ ├── counting_sort.cpp │ │ │ │ ├── heap_sort.cpp │ │ │ │ ├── insertion_sort.cpp │ │ │ │ ├── merge_sort.cpp │ │ │ │ ├── quick_sort.cpp │ │ │ │ ├── radix_sort.cpp │ │ │ │ └── selection_sort.cpp │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_deque.cpp │ │ │ │ ├── array_queue.cpp │ │ │ │ ├── array_stack.cpp │ │ │ │ ├── deque.cpp │ │ │ │ ├── linkedlist_deque.cpp │ │ │ │ ├── linkedlist_queue.cpp │ │ │ │ ├── linkedlist_stack.cpp │ │ │ │ ├── queue.cpp │ │ │ │ └── stack.cpp │ │ │ ├── chapter_tree/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_binary_tree.cpp │ │ │ │ ├── avl_tree.cpp │ │ │ │ ├── binary_search_tree.cpp │ │ │ │ ├── binary_tree.cpp │ │ │ │ ├── binary_tree_bfs.cpp │ │ │ │ └── binary_tree_dfs.cpp │ │ │ └── utils/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.hpp │ │ │ ├── list_node.hpp │ │ │ ├── print_utils.hpp │ │ │ ├── tree_node.hpp │ │ │ └── vertex.hpp │ │ ├── csharp/ │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── GlobalUsing.cs │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.cs │ │ │ │ ├── linked_list.cs │ │ │ │ ├── list.cs │ │ │ │ └── my_list.cs │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.cs │ │ │ │ ├── permutations_i.cs │ │ │ │ ├── permutations_ii.cs │ │ │ │ ├── preorder_traversal_i_compact.cs │ │ │ │ ├── preorder_traversal_ii_compact.cs │ │ │ │ ├── preorder_traversal_iii_compact.cs │ │ │ │ ├── preorder_traversal_iii_template.cs │ │ │ │ ├── subset_sum_i.cs │ │ │ │ ├── subset_sum_i_naive.cs │ │ │ │ └── subset_sum_ii.cs │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.cs │ │ │ │ ├── recursion.cs │ │ │ │ ├── space_complexity.cs │ │ │ │ ├── time_complexity.cs │ │ │ │ └── worst_best_time_complexity.cs │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.cs │ │ │ │ ├── build_tree.cs │ │ │ │ └── hanota.cs │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.cs │ │ │ │ ├── climbing_stairs_constraint_dp.cs │ │ │ │ ├── climbing_stairs_dfs.cs │ │ │ │ ├── climbing_stairs_dfs_mem.cs │ │ │ │ ├── climbing_stairs_dp.cs │ │ │ │ ├── coin_change.cs │ │ │ │ ├── coin_change_ii.cs │ │ │ │ ├── edit_distance.cs │ │ │ │ ├── knapsack.cs │ │ │ │ ├── min_cost_climbing_stairs_dp.cs │ │ │ │ ├── min_path_sum.cs │ │ │ │ └── unbounded_knapsack.cs │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.cs │ │ │ │ ├── graph_adjacency_matrix.cs │ │ │ │ ├── graph_bfs.cs │ │ │ │ └── graph_dfs.cs │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.cs │ │ │ │ ├── fractional_knapsack.cs │ │ │ │ ├── max_capacity.cs │ │ │ │ └── max_product_cutting.cs │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.cs │ │ │ │ ├── built_in_hash.cs │ │ │ │ ├── hash_map.cs │ │ │ │ ├── hash_map_chaining.cs │ │ │ │ ├── hash_map_open_addressing.cs │ │ │ │ └── simple_hash.cs │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.cs │ │ │ │ ├── my_heap.cs │ │ │ │ └── top_k.cs │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.cs │ │ │ │ ├── binary_search_edge.cs │ │ │ │ ├── binary_search_insertion.cs │ │ │ │ ├── hashing_search.cs │ │ │ │ ├── linear_search.cs │ │ │ │ └── two_sum.cs │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.cs │ │ │ │ ├── bucket_sort.cs │ │ │ │ ├── counting_sort.cs │ │ │ │ ├── heap_sort.cs │ │ │ │ ├── insertion_sort.cs │ │ │ │ ├── merge_sort.cs │ │ │ │ ├── quick_sort.cs │ │ │ │ ├── radix_sort.cs │ │ │ │ └── selection_sort.cs │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.cs │ │ │ │ ├── array_queue.cs │ │ │ │ ├── array_stack.cs │ │ │ │ ├── deque.cs │ │ │ │ ├── linkedlist_deque.cs │ │ │ │ ├── linkedlist_queue.cs │ │ │ │ ├── linkedlist_stack.cs │ │ │ │ ├── queue.cs │ │ │ │ └── stack.cs │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.cs │ │ │ │ ├── avl_tree.cs │ │ │ │ ├── binary_search_tree.cs │ │ │ │ ├── binary_tree.cs │ │ │ │ ├── binary_tree_bfs.cs │ │ │ │ └── binary_tree_dfs.cs │ │ │ ├── csharp.sln │ │ │ ├── hello-algo.csproj │ │ │ └── utils/ │ │ │ ├── ListNode.cs │ │ │ ├── PrintUtil.cs │ │ │ ├── TreeNode.cs │ │ │ └── Vertex.cs │ │ ├── dart/ │ │ │ ├── build.dart │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.dart │ │ │ │ ├── linked_list.dart │ │ │ │ ├── list.dart │ │ │ │ └── my_list.dart │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.dart │ │ │ │ ├── permutations_i.dart │ │ │ │ ├── permutations_ii.dart │ │ │ │ ├── preorder_traversal_i_compact.dart │ │ │ │ ├── preorder_traversal_ii_compact.dart │ │ │ │ ├── preorder_traversal_iii_compact.dart │ │ │ │ ├── preorder_traversal_iii_template.dart │ │ │ │ ├── subset_sum_i.dart │ │ │ │ ├── subset_sum_i_naive.dart │ │ │ │ └── subset_sum_ii.dart │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.dart │ │ │ │ ├── recursion.dart │ │ │ │ ├── space_complexity.dart │ │ │ │ ├── time_complexity.dart │ │ │ │ └── worst_best_time_complexity.dart │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.dart │ │ │ │ ├── build_tree.dart │ │ │ │ └── hanota.dart │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.dart │ │ │ │ ├── climbing_stairs_constraint_dp.dart │ │ │ │ ├── climbing_stairs_dfs.dart │ │ │ │ ├── climbing_stairs_dfs_mem.dart │ │ │ │ ├── climbing_stairs_dp.dart │ │ │ │ ├── coin_change.dart │ │ │ │ ├── coin_change_ii.dart │ │ │ │ ├── edit_distance.dart │ │ │ │ ├── knapsack.dart │ │ │ │ ├── min_cost_climbing_stairs_dp.dart │ │ │ │ ├── min_path_sum.dart │ │ │ │ └── unbounded_knapsack.dart │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.dart │ │ │ │ ├── graph_adjacency_matrix.dart │ │ │ │ ├── graph_bfs.dart │ │ │ │ └── graph_dfs.dart │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.dart │ │ │ │ ├── fractional_knapsack.dart │ │ │ │ ├── max_capacity.dart │ │ │ │ └── max_product_cutting.dart │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.dart │ │ │ │ ├── built_in_hash.dart │ │ │ │ ├── hash_map.dart │ │ │ │ ├── hash_map_chaining.dart │ │ │ │ ├── hash_map_open_addressing.dart │ │ │ │ └── simple_hash.dart │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.dart │ │ │ │ └── top_k.dart │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.dart │ │ │ │ ├── binary_search_edge.dart │ │ │ │ ├── binary_search_insertion.dart │ │ │ │ ├── hashing_search.dart │ │ │ │ ├── linear_search.dart │ │ │ │ └── two_sum.dart │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.dart │ │ │ │ ├── bucket_sort.dart │ │ │ │ ├── counting_sort.dart │ │ │ │ ├── heap_sort.dart │ │ │ │ ├── insertion_sort.dart │ │ │ │ ├── merge_sort.dart │ │ │ │ ├── quick_sort.dart │ │ │ │ ├── radix_sort.dart │ │ │ │ └── selection_sort.dart │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.dart │ │ │ │ ├── array_queue.dart │ │ │ │ ├── array_stack.dart │ │ │ │ ├── deque.dart │ │ │ │ ├── linkedlist_deque.dart │ │ │ │ ├── linkedlist_queue.dart │ │ │ │ ├── linkedlist_stack.dart │ │ │ │ ├── queue.dart │ │ │ │ └── stack.dart │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.dart │ │ │ │ ├── avl_tree.dart │ │ │ │ ├── binary_search_tree.dart │ │ │ │ ├── binary_tree.dart │ │ │ │ ├── binary_tree_bfs.dart │ │ │ │ └── binary_tree_dfs.dart │ │ │ └── utils/ │ │ │ ├── list_node.dart │ │ │ ├── print_util.dart │ │ │ ├── tree_node.dart │ │ │ └── vertex.dart │ │ ├── go/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.go │ │ │ │ ├── array_test.go │ │ │ │ ├── linked_list.go │ │ │ │ ├── linked_list_test.go │ │ │ │ ├── list_test.go │ │ │ │ ├── my_list.go │ │ │ │ └── my_list_test.go │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.go │ │ │ │ ├── n_queens_test.go │ │ │ │ ├── permutation_test.go │ │ │ │ ├── permutations_i.go │ │ │ │ ├── permutations_ii.go │ │ │ │ ├── preorder_traversal_i_compact.go │ │ │ │ ├── preorder_traversal_ii_compact.go │ │ │ │ ├── preorder_traversal_iii_compact.go │ │ │ │ ├── preorder_traversal_iii_template.go │ │ │ │ ├── preorder_traversal_test.go │ │ │ │ ├── subset_sum_i.go │ │ │ │ ├── subset_sum_i_naive.go │ │ │ │ ├── subset_sum_ii.go │ │ │ │ └── subset_sum_test.go │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.go │ │ │ │ ├── iteration_test.go │ │ │ │ ├── recursion.go │ │ │ │ ├── recursion_test.go │ │ │ │ ├── space_complexity.go │ │ │ │ ├── space_complexity_test.go │ │ │ │ ├── time_complexity.go │ │ │ │ ├── time_complexity_test.go │ │ │ │ ├── worst_best_time_complexity.go │ │ │ │ └── worst_best_time_complexity_test.go │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.go │ │ │ │ ├── binary_search_recur_test.go │ │ │ │ ├── build_tree.go │ │ │ │ ├── build_tree_test.go │ │ │ │ ├── hanota.go │ │ │ │ └── hanota_test.go │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.go │ │ │ │ ├── climbing_stairs_constraint_dp.go │ │ │ │ ├── climbing_stairs_dfs.go │ │ │ │ ├── climbing_stairs_dfs_mem.go │ │ │ │ ├── climbing_stairs_dp.go │ │ │ │ ├── climbing_stairs_test.go │ │ │ │ ├── coin_change.go │ │ │ │ ├── coin_change_ii.go │ │ │ │ ├── coin_change_test.go │ │ │ │ ├── edit_distance.go │ │ │ │ ├── edit_distance_test.go │ │ │ │ ├── knapsack.go │ │ │ │ ├── knapsack_test.go │ │ │ │ ├── min_cost_climbing_stairs_dp.go │ │ │ │ ├── min_path_sum.go │ │ │ │ ├── min_path_sum_test.go │ │ │ │ └── unbounded_knapsack.go │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.go │ │ │ │ ├── graph_adjacency_list_test.go │ │ │ │ ├── graph_adjacency_matrix.go │ │ │ │ ├── graph_adjacency_matrix_test.go │ │ │ │ ├── graph_bfs.go │ │ │ │ ├── graph_bfs_test.go │ │ │ │ ├── graph_dfs.go │ │ │ │ └── graph_dfs_test.go │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.go │ │ │ │ ├── coin_change_greedy_test.go │ │ │ │ ├── fractional_knapsack.go │ │ │ │ ├── fractional_knapsack_test.go │ │ │ │ ├── max_capacity.go │ │ │ │ ├── max_capacity_test.go │ │ │ │ ├── max_product_cutting.go │ │ │ │ └── max_product_cutting_test.go │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.go │ │ │ │ ├── array_hash_map_test.go │ │ │ │ ├── hash_collision_test.go │ │ │ │ ├── hash_map_chaining.go │ │ │ │ ├── hash_map_open_addressing.go │ │ │ │ ├── hash_map_test.go │ │ │ │ └── simple_hash.go │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.go │ │ │ │ ├── heap_test.go │ │ │ │ ├── my_heap.go │ │ │ │ └── top_k.go │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.go │ │ │ │ ├── binary_search_edge.go │ │ │ │ ├── binary_search_insertion.go │ │ │ │ ├── binary_search_test.go │ │ │ │ ├── hashing_search.go │ │ │ │ ├── hashing_search_test.go │ │ │ │ ├── linear_search.go │ │ │ │ ├── linear_search_test.go │ │ │ │ ├── two_sum.go │ │ │ │ └── two_sum_test.go │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.go │ │ │ │ ├── bubble_sort_test.go │ │ │ │ ├── bucket_sort.go │ │ │ │ ├── bucket_sort_test.go │ │ │ │ ├── counting_sort.go │ │ │ │ ├── counting_sort_test.go │ │ │ │ ├── heap_sort.go │ │ │ │ ├── heap_sort_test.go │ │ │ │ ├── insertion_sort.go │ │ │ │ ├── insertion_sort_test.go │ │ │ │ ├── merge_sort.go │ │ │ │ ├── merge_sort_test.go │ │ │ │ ├── quick_sort.go │ │ │ │ ├── quick_sort_test.go │ │ │ │ ├── radix_sort.go │ │ │ │ ├── radix_sort_test.go │ │ │ │ ├── selection_sort.go │ │ │ │ └── selection_sort_test.go │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.go │ │ │ │ ├── array_queue.go │ │ │ │ ├── array_stack.go │ │ │ │ ├── deque_test.go │ │ │ │ ├── linkedlist_deque.go │ │ │ │ ├── linkedlist_queue.go │ │ │ │ ├── linkedlist_stack.go │ │ │ │ ├── queue_test.go │ │ │ │ └── stack_test.go │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.go │ │ │ │ ├── array_binary_tree_test.go │ │ │ │ ├── avl_tree.go │ │ │ │ ├── avl_tree_test.go │ │ │ │ ├── binary_search_tree.go │ │ │ │ ├── binary_search_tree_test.go │ │ │ │ ├── binary_tree_bfs.go │ │ │ │ ├── binary_tree_bfs_test.go │ │ │ │ ├── binary_tree_dfs.go │ │ │ │ ├── binary_tree_dfs_test.go │ │ │ │ └── binary_tree_test.go │ │ │ ├── go.mod │ │ │ └── pkg/ │ │ │ ├── list_node.go │ │ │ ├── list_node_test.go │ │ │ ├── print_utils.go │ │ │ ├── tree_node.go │ │ │ ├── tree_node_test.go │ │ │ └── vertex.go │ │ ├── java/ │ │ │ ├── .gitignore │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.java │ │ │ │ ├── linked_list.java │ │ │ │ ├── list.java │ │ │ │ └── my_list.java │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.java │ │ │ │ ├── permutations_i.java │ │ │ │ ├── permutations_ii.java │ │ │ │ ├── preorder_traversal_i_compact.java │ │ │ │ ├── preorder_traversal_ii_compact.java │ │ │ │ ├── preorder_traversal_iii_compact.java │ │ │ │ ├── preorder_traversal_iii_template.java │ │ │ │ ├── subset_sum_i.java │ │ │ │ ├── subset_sum_i_naive.java │ │ │ │ └── subset_sum_ii.java │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.java │ │ │ │ ├── recursion.java │ │ │ │ ├── space_complexity.java │ │ │ │ ├── time_complexity.java │ │ │ │ └── worst_best_time_complexity.java │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.java │ │ │ │ ├── build_tree.java │ │ │ │ └── hanota.java │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.java │ │ │ │ ├── climbing_stairs_constraint_dp.java │ │ │ │ ├── climbing_stairs_dfs.java │ │ │ │ ├── climbing_stairs_dfs_mem.java │ │ │ │ ├── climbing_stairs_dp.java │ │ │ │ ├── coin_change.java │ │ │ │ ├── coin_change_ii.java │ │ │ │ ├── edit_distance.java │ │ │ │ ├── knapsack.java │ │ │ │ ├── min_cost_climbing_stairs_dp.java │ │ │ │ ├── min_path_sum.java │ │ │ │ └── unbounded_knapsack.java │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.java │ │ │ │ ├── graph_adjacency_matrix.java │ │ │ │ ├── graph_bfs.java │ │ │ │ └── graph_dfs.java │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.java │ │ │ │ ├── fractional_knapsack.java │ │ │ │ ├── max_capacity.java │ │ │ │ └── max_product_cutting.java │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.java │ │ │ │ ├── built_in_hash.java │ │ │ │ ├── hash_map.java │ │ │ │ ├── hash_map_chaining.java │ │ │ │ ├── hash_map_open_addressing.java │ │ │ │ └── simple_hash.java │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.java │ │ │ │ ├── my_heap.java │ │ │ │ └── top_k.java │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.java │ │ │ │ ├── binary_search_edge.java │ │ │ │ ├── binary_search_insertion.java │ │ │ │ ├── hashing_search.java │ │ │ │ ├── linear_search.java │ │ │ │ └── two_sum.java │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.java │ │ │ │ ├── bucket_sort.java │ │ │ │ ├── counting_sort.java │ │ │ │ ├── heap_sort.java │ │ │ │ ├── insertion_sort.java │ │ │ │ ├── merge_sort.java │ │ │ │ ├── quick_sort.java │ │ │ │ ├── radix_sort.java │ │ │ │ └── selection_sort.java │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.java │ │ │ │ ├── array_queue.java │ │ │ │ ├── array_stack.java │ │ │ │ ├── deque.java │ │ │ │ ├── linkedlist_deque.java │ │ │ │ ├── linkedlist_queue.java │ │ │ │ ├── linkedlist_stack.java │ │ │ │ ├── queue.java │ │ │ │ └── stack.java │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.java │ │ │ │ ├── avl_tree.java │ │ │ │ ├── binary_search_tree.java │ │ │ │ ├── binary_tree.java │ │ │ │ ├── binary_tree_bfs.java │ │ │ │ └── binary_tree_dfs.java │ │ │ └── utils/ │ │ │ ├── ListNode.java │ │ │ ├── PrintUtil.java │ │ │ ├── TreeNode.java │ │ │ └── Vertex.java │ │ ├── javascript/ │ │ │ ├── .prettierrc │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.js │ │ │ │ ├── linked_list.js │ │ │ │ ├── list.js │ │ │ │ └── my_list.js │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.js │ │ │ │ ├── permutations_i.js │ │ │ │ ├── permutations_ii.js │ │ │ │ ├── preorder_traversal_i_compact.js │ │ │ │ ├── preorder_traversal_ii_compact.js │ │ │ │ ├── preorder_traversal_iii_compact.js │ │ │ │ ├── preorder_traversal_iii_template.js │ │ │ │ ├── subset_sum_i.js │ │ │ │ ├── subset_sum_i_naive.js │ │ │ │ └── subset_sum_ii.js │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.js │ │ │ │ ├── recursion.js │ │ │ │ ├── space_complexity.js │ │ │ │ ├── time_complexity.js │ │ │ │ └── worst_best_time_complexity.js │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.js │ │ │ │ ├── build_tree.js │ │ │ │ └── hanota.js │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.js │ │ │ │ ├── climbing_stairs_constraint_dp.js │ │ │ │ ├── climbing_stairs_dfs.js │ │ │ │ ├── climbing_stairs_dfs_mem.js │ │ │ │ ├── climbing_stairs_dp.js │ │ │ │ ├── coin_change.js │ │ │ │ ├── coin_change_ii.js │ │ │ │ ├── edit_distance.js │ │ │ │ ├── knapsack.js │ │ │ │ ├── min_cost_climbing_stairs_dp.js │ │ │ │ ├── min_path_sum.js │ │ │ │ └── unbounded_knapsack.js │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.js │ │ │ │ ├── graph_adjacency_matrix.js │ │ │ │ ├── graph_bfs.js │ │ │ │ └── graph_dfs.js │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.js │ │ │ │ ├── fractional_knapsack.js │ │ │ │ ├── max_capacity.js │ │ │ │ └── max_product_cutting.js │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.js │ │ │ │ ├── hash_map.js │ │ │ │ ├── hash_map_chaining.js │ │ │ │ ├── hash_map_open_addressing.js │ │ │ │ └── simple_hash.js │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.js │ │ │ │ └── top_k.js │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.js │ │ │ │ ├── binary_search_edge.js │ │ │ │ ├── binary_search_insertion.js │ │ │ │ ├── hashing_search.js │ │ │ │ ├── linear_search.js │ │ │ │ └── two_sum.js │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.js │ │ │ │ ├── bucket_sort.js │ │ │ │ ├── counting_sort.js │ │ │ │ ├── heap_sort.js │ │ │ │ ├── insertion_sort.js │ │ │ │ ├── merge_sort.js │ │ │ │ ├── quick_sort.js │ │ │ │ ├── radix_sort.js │ │ │ │ └── selection_sort.js │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.js │ │ │ │ ├── array_queue.js │ │ │ │ ├── array_stack.js │ │ │ │ ├── deque.js │ │ │ │ ├── linkedlist_deque.js │ │ │ │ ├── linkedlist_queue.js │ │ │ │ ├── linkedlist_stack.js │ │ │ │ ├── queue.js │ │ │ │ └── stack.js │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.js │ │ │ │ ├── avl_tree.js │ │ │ │ ├── binary_search_tree.js │ │ │ │ ├── binary_tree.js │ │ │ │ ├── binary_tree_bfs.js │ │ │ │ └── binary_tree_dfs.js │ │ │ ├── modules/ │ │ │ │ ├── ListNode.js │ │ │ │ ├── PrintUtil.js │ │ │ │ ├── TreeNode.js │ │ │ │ └── Vertex.js │ │ │ └── test_all.js │ │ ├── kotlin/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.kt │ │ │ │ ├── linked_list.kt │ │ │ │ ├── list.kt │ │ │ │ └── my_list.kt │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.kt │ │ │ │ ├── permutations_i.kt │ │ │ │ ├── permutations_ii.kt │ │ │ │ ├── preorder_traversal_i_compact.kt │ │ │ │ ├── preorder_traversal_ii_compact.kt │ │ │ │ ├── preorder_traversal_iii_compact.kt │ │ │ │ ├── preorder_traversal_iii_template.kt │ │ │ │ ├── subset_sum_i.kt │ │ │ │ ├── subset_sum_i_naive.kt │ │ │ │ └── subset_sum_ii.kt │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.kt │ │ │ │ ├── recursion.kt │ │ │ │ ├── space_complexity.kt │ │ │ │ ├── time_complexity.kt │ │ │ │ └── worst_best_time_complexity.kt │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.kt │ │ │ │ ├── build_tree.kt │ │ │ │ └── hanota.kt │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.kt │ │ │ │ ├── climbing_stairs_constraint_dp.kt │ │ │ │ ├── climbing_stairs_dfs.kt │ │ │ │ ├── climbing_stairs_dfs_mem.kt │ │ │ │ ├── climbing_stairs_dp.kt │ │ │ │ ├── coin_change.kt │ │ │ │ ├── coin_change_ii.kt │ │ │ │ ├── edit_distance.kt │ │ │ │ ├── knapsack.kt │ │ │ │ ├── min_cost_climbing_stairs_dp.kt │ │ │ │ ├── min_path_sum.kt │ │ │ │ └── unbounded_knapsack.kt │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.kt │ │ │ │ ├── graph_adjacency_matrix.kt │ │ │ │ ├── graph_bfs.kt │ │ │ │ └── graph_dfs.kt │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.kt │ │ │ │ ├── fractional_knapsack.kt │ │ │ │ ├── max_capacity.kt │ │ │ │ └── max_product_cutting.kt │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.kt │ │ │ │ ├── built_in_hash.kt │ │ │ │ ├── hash_map.kt │ │ │ │ ├── hash_map_chaining.kt │ │ │ │ ├── hash_map_open_addressing.kt │ │ │ │ └── simple_hash.kt │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.kt │ │ │ │ ├── my_heap.kt │ │ │ │ └── top_k.kt │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.kt │ │ │ │ ├── binary_search_edge.kt │ │ │ │ ├── binary_search_insertion.kt │ │ │ │ ├── hashing_search.kt │ │ │ │ ├── linear_search.kt │ │ │ │ └── two_sum.kt │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.kt │ │ │ │ ├── bucket_sort.kt │ │ │ │ ├── counting_sort.kt │ │ │ │ ├── heap_sort.kt │ │ │ │ ├── insertion_sort.kt │ │ │ │ ├── merge_sort.kt │ │ │ │ ├── quick_sort.kt │ │ │ │ ├── radix_sort.kt │ │ │ │ └── selection_sort.kt │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.kt │ │ │ │ ├── array_queue.kt │ │ │ │ ├── array_stack.kt │ │ │ │ ├── deque.kt │ │ │ │ ├── linkedlist_deque.kt │ │ │ │ ├── linkedlist_queue.kt │ │ │ │ ├── linkedlist_stack.kt │ │ │ │ ├── queue.kt │ │ │ │ └── stack.kt │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.kt │ │ │ │ ├── avl_tree.kt │ │ │ │ ├── binary_search_tree.kt │ │ │ │ ├── binary_tree.kt │ │ │ │ ├── binary_tree_bfs.kt │ │ │ │ └── binary_tree_dfs.kt │ │ │ └── utils/ │ │ │ ├── ListNode.kt │ │ │ ├── PrintUtil.kt │ │ │ ├── TreeNode.kt │ │ │ └── Vertex.kt │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.py │ │ │ │ ├── linked_list.py │ │ │ │ ├── list.py │ │ │ │ └── my_list.py │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.py │ │ │ │ ├── permutations_i.py │ │ │ │ ├── permutations_ii.py │ │ │ │ ├── preorder_traversal_i_compact.py │ │ │ │ ├── preorder_traversal_ii_compact.py │ │ │ │ ├── preorder_traversal_iii_compact.py │ │ │ │ ├── preorder_traversal_iii_template.py │ │ │ │ ├── subset_sum_i.py │ │ │ │ ├── subset_sum_i_naive.py │ │ │ │ └── subset_sum_ii.py │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.py │ │ │ │ ├── recursion.py │ │ │ │ ├── space_complexity.py │ │ │ │ ├── time_complexity.py │ │ │ │ └── worst_best_time_complexity.py │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.py │ │ │ │ ├── build_tree.py │ │ │ │ └── hanota.py │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.py │ │ │ │ ├── climbing_stairs_constraint_dp.py │ │ │ │ ├── climbing_stairs_dfs.py │ │ │ │ ├── climbing_stairs_dfs_mem.py │ │ │ │ ├── climbing_stairs_dp.py │ │ │ │ ├── coin_change.py │ │ │ │ ├── coin_change_ii.py │ │ │ │ ├── edit_distance.py │ │ │ │ ├── knapsack.py │ │ │ │ ├── min_cost_climbing_stairs_dp.py │ │ │ │ ├── min_path_sum.py │ │ │ │ └── unbounded_knapsack.py │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.py │ │ │ │ ├── graph_adjacency_matrix.py │ │ │ │ ├── graph_bfs.py │ │ │ │ └── graph_dfs.py │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.py │ │ │ │ ├── fractional_knapsack.py │ │ │ │ ├── max_capacity.py │ │ │ │ └── max_product_cutting.py │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.py │ │ │ │ ├── built_in_hash.py │ │ │ │ ├── hash_map.py │ │ │ │ ├── hash_map_chaining.py │ │ │ │ ├── hash_map_open_addressing.py │ │ │ │ └── simple_hash.py │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.py │ │ │ │ ├── my_heap.py │ │ │ │ └── top_k.py │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.py │ │ │ │ ├── binary_search_edge.py │ │ │ │ ├── binary_search_insertion.py │ │ │ │ ├── hashing_search.py │ │ │ │ ├── linear_search.py │ │ │ │ └── two_sum.py │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.py │ │ │ │ ├── bucket_sort.py │ │ │ │ ├── counting_sort.py │ │ │ │ ├── heap_sort.py │ │ │ │ ├── insertion_sort.py │ │ │ │ ├── merge_sort.py │ │ │ │ ├── quick_sort.py │ │ │ │ ├── radix_sort.py │ │ │ │ └── selection_sort.py │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.py │ │ │ │ ├── array_queue.py │ │ │ │ ├── array_stack.py │ │ │ │ ├── deque.py │ │ │ │ ├── linkedlist_deque.py │ │ │ │ ├── linkedlist_queue.py │ │ │ │ ├── linkedlist_stack.py │ │ │ │ ├── queue.py │ │ │ │ └── stack.py │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.py │ │ │ │ ├── avl_tree.py │ │ │ │ ├── binary_search_tree.py │ │ │ │ ├── binary_tree.py │ │ │ │ ├── binary_tree_bfs.py │ │ │ │ └── binary_tree_dfs.py │ │ │ ├── modules/ │ │ │ │ ├── __init__.py │ │ │ │ ├── list_node.py │ │ │ │ ├── print_util.py │ │ │ │ ├── tree_node.py │ │ │ │ └── vertex.py │ │ │ └── test_all.py │ │ ├── pythontutor/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.md │ │ │ │ ├── linked_list.md │ │ │ │ └── my_list.md │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.md │ │ │ │ ├── permutations_i.md │ │ │ │ ├── permutations_ii.md │ │ │ │ ├── preorder_traversal_i_compact.md │ │ │ │ ├── preorder_traversal_ii_compact.md │ │ │ │ ├── preorder_traversal_iii_compact.md │ │ │ │ ├── preorder_traversal_iii_template.md │ │ │ │ ├── subset_sum_i.md │ │ │ │ ├── subset_sum_i_naive.md │ │ │ │ └── subset_sum_ii.md │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.md │ │ │ │ ├── recursion.md │ │ │ │ ├── space_complexity.md │ │ │ │ ├── time_complexity.md │ │ │ │ └── worst_best_time_complexity.md │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.md │ │ │ │ ├── build_tree.md │ │ │ │ └── hanota.md │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.md │ │ │ │ ├── climbing_stairs_constraint_dp.md │ │ │ │ ├── climbing_stairs_dfs.md │ │ │ │ ├── climbing_stairs_dfs_mem.md │ │ │ │ ├── climbing_stairs_dp.md │ │ │ │ ├── coin_change.md │ │ │ │ ├── coin_change_ii.md │ │ │ │ ├── edit_distance.md │ │ │ │ ├── knapsack.md │ │ │ │ ├── min_cost_climbing_stairs_dp.md │ │ │ │ ├── min_path_sum.md │ │ │ │ └── unbounded_knapsack.md │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.md │ │ │ │ ├── graph_adjacency_matrix.md │ │ │ │ ├── graph_bfs.md │ │ │ │ └── graph_dfs.md │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.md │ │ │ │ ├── fractional_knapsack.md │ │ │ │ ├── max_capacity.md │ │ │ │ └── max_product_cutting.md │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.md │ │ │ │ ├── hash_map_chaining.md │ │ │ │ └── simple_hash.md │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.md │ │ │ │ └── top_k.md │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.md │ │ │ │ ├── binary_search_edge.md │ │ │ │ ├── binary_search_insertion.md │ │ │ │ └── two_sum.md │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.md │ │ │ │ ├── bucket_sort.md │ │ │ │ ├── counting_sort.md │ │ │ │ ├── heap_sort.md │ │ │ │ ├── insertion_sort.md │ │ │ │ ├── merge_sort.md │ │ │ │ ├── quick_sort.md │ │ │ │ ├── radix_sort.md │ │ │ │ └── selection_sort.md │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_queue.md │ │ │ │ ├── array_stack.md │ │ │ │ ├── linkedlist_queue.md │ │ │ │ └── linkedlist_stack.md │ │ │ └── chapter_tree/ │ │ │ ├── array_binary_tree.md │ │ │ ├── binary_search_tree.md │ │ │ ├── binary_tree_bfs.md │ │ │ └── binary_tree_dfs.md │ │ ├── ruby/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.rb │ │ │ │ ├── linked_list.rb │ │ │ │ ├── list.rb │ │ │ │ └── my_list.rb │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.rb │ │ │ │ ├── permutations_i.rb │ │ │ │ ├── permutations_ii.rb │ │ │ │ ├── preorder_traversal_i_compact.rb │ │ │ │ ├── preorder_traversal_ii_compact.rb │ │ │ │ ├── preorder_traversal_iii_compact.rb │ │ │ │ ├── preorder_traversal_iii_template.rb │ │ │ │ ├── subset_sum_i.rb │ │ │ │ ├── subset_sum_i_naive.rb │ │ │ │ └── subset_sum_ii.rb │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.rb │ │ │ │ ├── recursion.rb │ │ │ │ ├── space_complexity.rb │ │ │ │ ├── time_complexity.rb │ │ │ │ └── worst_best_time_complexity.rb │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.rb │ │ │ │ ├── build_tree.rb │ │ │ │ └── hanota.rb │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.rb │ │ │ │ ├── climbing_stairs_constraint_dp.rb │ │ │ │ ├── climbing_stairs_dfs.rb │ │ │ │ ├── climbing_stairs_dfs_mem.rb │ │ │ │ ├── climbing_stairs_dp.rb │ │ │ │ ├── coin_change.rb │ │ │ │ ├── coin_change_ii.rb │ │ │ │ ├── edit_distance.rb │ │ │ │ ├── knapsack.rb │ │ │ │ ├── min_cost_climbing_stairs_dp.rb │ │ │ │ ├── min_path_sum.rb │ │ │ │ └── unbounded_knapsack.rb │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.rb │ │ │ │ ├── graph_adjacency_matrix.rb │ │ │ │ ├── graph_bfs.rb │ │ │ │ └── graph_dfs.rb │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.rb │ │ │ │ ├── fractional_knapsack.rb │ │ │ │ ├── max_capacity.rb │ │ │ │ └── max_product_cutting.rb │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.rb │ │ │ │ ├── built_in_hash.rb │ │ │ │ ├── hash_map.rb │ │ │ │ ├── hash_map_chaining.rb │ │ │ │ ├── hash_map_open_addressing.rb │ │ │ │ └── simple_hash.rb │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.rb │ │ │ │ └── top_k.rb │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.rb │ │ │ │ ├── binary_search_edge.rb │ │ │ │ ├── binary_search_insertion.rb │ │ │ │ ├── hashing_search.rb │ │ │ │ ├── linear_search.rb │ │ │ │ └── two_sum.rb │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.rb │ │ │ │ ├── bucket_sort.rb │ │ │ │ ├── counting_sort.rb │ │ │ │ ├── heap_sort.rb │ │ │ │ ├── insertion_sort.rb │ │ │ │ ├── merge_sort.rb │ │ │ │ ├── quick_sort.rb │ │ │ │ ├── radix_sort.rb │ │ │ │ └── selection_sort.rb │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.rb │ │ │ │ ├── array_queue.rb │ │ │ │ ├── array_stack.rb │ │ │ │ ├── deque.rb │ │ │ │ ├── linkedlist_deque.rb │ │ │ │ ├── linkedlist_queue.rb │ │ │ │ ├── linkedlist_stack.rb │ │ │ │ ├── queue.rb │ │ │ │ └── stack.rb │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.rb │ │ │ │ ├── avl_tree.rb │ │ │ │ ├── binary_search_tree.rb │ │ │ │ ├── binary_tree.rb │ │ │ │ ├── binary_tree_bfs.rb │ │ │ │ └── binary_tree_dfs.rb │ │ │ ├── test_all.rb │ │ │ └── utils/ │ │ │ ├── list_node.rb │ │ │ ├── print_util.rb │ │ │ ├── tree_node.rb │ │ │ └── vertex.rb │ │ ├── rust/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.rs │ │ │ │ ├── linked_list.rs │ │ │ │ ├── list.rs │ │ │ │ └── my_list.rs │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.rs │ │ │ │ ├── permutations_i.rs │ │ │ │ ├── permutations_ii.rs │ │ │ │ ├── preorder_traversal_i_compact.rs │ │ │ │ ├── preorder_traversal_ii_compact.rs │ │ │ │ ├── preorder_traversal_iii_compact.rs │ │ │ │ ├── preorder_traversal_iii_template.rs │ │ │ │ ├── subset_sum_i.rs │ │ │ │ ├── subset_sum_i_naive.rs │ │ │ │ └── subset_sum_ii.rs │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.rs │ │ │ │ ├── recursion.rs │ │ │ │ ├── space_complexity.rs │ │ │ │ ├── time_complexity.rs │ │ │ │ └── worst_best_time_complexity.rs │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.rs │ │ │ │ ├── build_tree.rs │ │ │ │ └── hanota.rs │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.rs │ │ │ │ ├── climbing_stairs_constraint_dp.rs │ │ │ │ ├── climbing_stairs_dfs.rs │ │ │ │ ├── climbing_stairs_dfs_mem.rs │ │ │ │ ├── climbing_stairs_dp.rs │ │ │ │ ├── coin_change.rs │ │ │ │ ├── coin_change_ii.rs │ │ │ │ ├── edit_distance.rs │ │ │ │ ├── knapsack.rs │ │ │ │ ├── min_cost_climbing_stairs_dp.rs │ │ │ │ ├── min_path_sum.rs │ │ │ │ └── unbounded_knapsack.rs │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.rs │ │ │ │ ├── graph_adjacency_matrix.rs │ │ │ │ ├── graph_bfs.rs │ │ │ │ └── graph_dfs.rs │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.rs │ │ │ │ ├── fractional_knapsack.rs │ │ │ │ ├── max_capacity.rs │ │ │ │ └── max_product_cutting.rs │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.rs │ │ │ │ ├── build_in_hash.rs │ │ │ │ ├── hash_map.rs │ │ │ │ ├── hash_map_chaining.rs │ │ │ │ ├── hash_map_open_addressing.rs │ │ │ │ └── simple_hash.rs │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.rs │ │ │ │ ├── my_heap.rs │ │ │ │ └── top_k.rs │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.rs │ │ │ │ ├── binary_search_edge.rs │ │ │ │ ├── binary_search_insertion.rs │ │ │ │ ├── hashing_search.rs │ │ │ │ ├── linear_search.rs │ │ │ │ └── two_sum.rs │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.rs │ │ │ │ ├── bucket_sort.rs │ │ │ │ ├── counting_sort.rs │ │ │ │ ├── heap_sort.rs │ │ │ │ ├── insertion_sort.rs │ │ │ │ ├── merge_sort.rs │ │ │ │ ├── quick_sort.rs │ │ │ │ ├── radix_sort.rs │ │ │ │ └── selection_sort.rs │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.rs │ │ │ │ ├── array_queue.rs │ │ │ │ ├── array_stack.rs │ │ │ │ ├── deque.rs │ │ │ │ ├── linkedlist_deque.rs │ │ │ │ ├── linkedlist_queue.rs │ │ │ │ ├── linkedlist_stack.rs │ │ │ │ ├── queue.rs │ │ │ │ └── stack.rs │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.rs │ │ │ │ ├── avl_tree.rs │ │ │ │ ├── binary_search_tree.rs │ │ │ │ ├── binary_tree.rs │ │ │ │ ├── binary_tree_bfs.rs │ │ │ │ └── binary_tree_dfs.rs │ │ │ └── src/ │ │ │ ├── include/ │ │ │ │ ├── list_node.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── print_util.rs │ │ │ │ ├── tree_node.rs │ │ │ │ └── vertex.rs │ │ │ └── lib.rs │ │ ├── swift/ │ │ │ ├── .gitignore │ │ │ ├── Package.resolved │ │ │ ├── Package.swift │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.swift │ │ │ │ ├── linked_list.swift │ │ │ │ ├── list.swift │ │ │ │ └── my_list.swift │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.swift │ │ │ │ ├── permutations_i.swift │ │ │ │ ├── permutations_ii.swift │ │ │ │ ├── preorder_traversal_i_compact.swift │ │ │ │ ├── preorder_traversal_ii_compact.swift │ │ │ │ ├── preorder_traversal_iii_compact.swift │ │ │ │ ├── preorder_traversal_iii_template.swift │ │ │ │ ├── subset_sum_i.swift │ │ │ │ ├── subset_sum_i_naive.swift │ │ │ │ └── subset_sum_ii.swift │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.swift │ │ │ │ ├── recursion.swift │ │ │ │ ├── space_complexity.swift │ │ │ │ ├── time_complexity.swift │ │ │ │ └── worst_best_time_complexity.swift │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.swift │ │ │ │ ├── build_tree.swift │ │ │ │ └── hanota.swift │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.swift │ │ │ │ ├── climbing_stairs_constraint_dp.swift │ │ │ │ ├── climbing_stairs_dfs.swift │ │ │ │ ├── climbing_stairs_dfs_mem.swift │ │ │ │ ├── climbing_stairs_dp.swift │ │ │ │ ├── coin_change.swift │ │ │ │ ├── coin_change_ii.swift │ │ │ │ ├── edit_distance.swift │ │ │ │ ├── knapsack.swift │ │ │ │ ├── min_cost_climbing_stairs_dp.swift │ │ │ │ ├── min_path_sum.swift │ │ │ │ └── unbounded_knapsack.swift │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.swift │ │ │ │ ├── graph_adjacency_list_target.swift │ │ │ │ ├── graph_adjacency_matrix.swift │ │ │ │ ├── graph_bfs.swift │ │ │ │ └── graph_dfs.swift │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.swift │ │ │ │ ├── fractional_knapsack.swift │ │ │ │ ├── max_capacity.swift │ │ │ │ └── max_product_cutting.swift │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.swift │ │ │ │ ├── built_in_hash.swift │ │ │ │ ├── hash_map.swift │ │ │ │ ├── hash_map_chaining.swift │ │ │ │ ├── hash_map_open_addressing.swift │ │ │ │ └── simple_hash.swift │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.swift │ │ │ │ ├── my_heap.swift │ │ │ │ └── top_k.swift │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.swift │ │ │ │ ├── binary_search_edge.swift │ │ │ │ ├── binary_search_insertion.swift │ │ │ │ ├── binary_search_insertion_target.swift │ │ │ │ ├── hashing_search.swift │ │ │ │ ├── linear_search.swift │ │ │ │ └── two_sum.swift │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.swift │ │ │ │ ├── bucket_sort.swift │ │ │ │ ├── counting_sort.swift │ │ │ │ ├── heap_sort.swift │ │ │ │ ├── insertion_sort.swift │ │ │ │ ├── merge_sort.swift │ │ │ │ ├── quick_sort.swift │ │ │ │ ├── radix_sort.swift │ │ │ │ └── selection_sort.swift │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.swift │ │ │ │ ├── array_queue.swift │ │ │ │ ├── array_stack.swift │ │ │ │ ├── deque.swift │ │ │ │ ├── linkedlist_deque.swift │ │ │ │ ├── linkedlist_queue.swift │ │ │ │ ├── linkedlist_stack.swift │ │ │ │ ├── queue.swift │ │ │ │ └── stack.swift │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.swift │ │ │ │ ├── avl_tree.swift │ │ │ │ ├── binary_search_tree.swift │ │ │ │ ├── binary_tree.swift │ │ │ │ ├── binary_tree_bfs.swift │ │ │ │ └── binary_tree_dfs.swift │ │ │ └── utils/ │ │ │ ├── ListNode.swift │ │ │ ├── Pair.swift │ │ │ ├── PrintUtil.swift │ │ │ ├── TreeNode.swift │ │ │ └── Vertex.swift │ │ ├── typescript/ │ │ │ ├── .gitignore │ │ │ ├── .prettierrc │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.ts │ │ │ │ ├── linked_list.ts │ │ │ │ ├── list.ts │ │ │ │ └── my_list.ts │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.ts │ │ │ │ ├── permutations_i.ts │ │ │ │ ├── permutations_ii.ts │ │ │ │ ├── preorder_traversal_i_compact.ts │ │ │ │ ├── preorder_traversal_ii_compact.ts │ │ │ │ ├── preorder_traversal_iii_compact.ts │ │ │ │ ├── preorder_traversal_iii_template.ts │ │ │ │ ├── subset_sum_i.ts │ │ │ │ ├── subset_sum_i_naive.ts │ │ │ │ └── subset_sum_ii.ts │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.ts │ │ │ │ ├── recursion.ts │ │ │ │ ├── space_complexity.ts │ │ │ │ ├── time_complexity.ts │ │ │ │ └── worst_best_time_complexity.ts │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.ts │ │ │ │ ├── build_tree.ts │ │ │ │ └── hanota.ts │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.ts │ │ │ │ ├── climbing_stairs_constraint_dp.ts │ │ │ │ ├── climbing_stairs_dfs.ts │ │ │ │ ├── climbing_stairs_dfs_mem.ts │ │ │ │ ├── climbing_stairs_dp.ts │ │ │ │ ├── coin_change.ts │ │ │ │ ├── coin_change_ii.ts │ │ │ │ ├── edit_distance.ts │ │ │ │ ├── knapsack.ts │ │ │ │ ├── min_cost_climbing_stairs_dp.ts │ │ │ │ ├── min_path_sum.ts │ │ │ │ └── unbounded_knapsack.ts │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.ts │ │ │ │ ├── graph_adjacency_matrix.ts │ │ │ │ ├── graph_bfs.ts │ │ │ │ └── graph_dfs.ts │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.ts │ │ │ │ ├── fractional_knapsack.ts │ │ │ │ ├── max_capacity.ts │ │ │ │ └── max_product_cutting.ts │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.ts │ │ │ │ ├── hash_map.ts │ │ │ │ ├── hash_map_chaining.ts │ │ │ │ ├── hash_map_open_addressing.ts │ │ │ │ └── simple_hash.ts │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.ts │ │ │ │ └── top_k.ts │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.ts │ │ │ │ ├── binary_search_edge.ts │ │ │ │ ├── binary_search_insertion.ts │ │ │ │ ├── hashing_search.ts │ │ │ │ ├── linear_search.ts │ │ │ │ └── two_sum.ts │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.ts │ │ │ │ ├── bucket_sort.ts │ │ │ │ ├── counting_sort.ts │ │ │ │ ├── heap_sort.ts │ │ │ │ ├── insertion_sort.ts │ │ │ │ ├── merge_sort.ts │ │ │ │ ├── quick_sort.ts │ │ │ │ ├── radix_sort.ts │ │ │ │ └── selection_sort.ts │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.ts │ │ │ │ ├── array_queue.ts │ │ │ │ ├── array_stack.ts │ │ │ │ ├── deque.ts │ │ │ │ ├── linkedlist_deque.ts │ │ │ │ ├── linkedlist_queue.ts │ │ │ │ ├── linkedlist_stack.ts │ │ │ │ ├── queue.ts │ │ │ │ └── stack.ts │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.ts │ │ │ │ ├── avl_tree.ts │ │ │ │ ├── binary_search_tree.ts │ │ │ │ ├── binary_tree.ts │ │ │ │ ├── binary_tree_bfs.ts │ │ │ │ └── binary_tree_dfs.ts │ │ │ ├── modules/ │ │ │ │ ├── ListNode.ts │ │ │ │ ├── PrintUtil.ts │ │ │ │ ├── TreeNode.ts │ │ │ │ └── Vertex.ts │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ └── zig/ │ │ ├── .gitignore │ │ ├── build.zig │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.zig │ │ │ ├── linked_list.zig │ │ │ ├── list.zig │ │ │ └── my_list.zig │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.zig │ │ │ ├── recursion.zig │ │ │ ├── space_complexity.zig │ │ │ ├── time_complexity.zig │ │ │ └── worst_best_time_complexity.zig │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.zig │ │ │ ├── climbing_stairs_constraint_dp.zig │ │ │ ├── climbing_stairs_dfs.zig │ │ │ ├── climbing_stairs_dfs_mem.zig │ │ │ ├── climbing_stairs_dp.zig │ │ │ ├── coin_change.zig │ │ │ ├── coin_change_ii.zig │ │ │ ├── edit_distance.zig │ │ │ ├── knapsack.zig │ │ │ ├── min_cost_climbing_stairs_dp.zig │ │ │ ├── min_path_sum.zig │ │ │ └── unbounded_knapsack.zig │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.zig │ │ │ └── hash_map.zig │ │ ├── chapter_heap/ │ │ │ ├── heap.zig │ │ │ └── my_heap.zig │ │ ├── chapter_searching/ │ │ │ ├── binary_search.zig │ │ │ ├── hashing_search.zig │ │ │ ├── linear_search.zig │ │ │ └── two_sum.zig │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.zig │ │ │ ├── insertion_sort.zig │ │ │ ├── merge_sort.zig │ │ │ ├── quick_sort.zig │ │ │ └── radix_sort.zig │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_queue.zig │ │ │ ├── array_stack.zig │ │ │ ├── deque.zig │ │ │ ├── linkedlist_deque.zig │ │ │ ├── linkedlist_queue.zig │ │ │ ├── linkedlist_stack.zig │ │ │ ├── queue.zig │ │ │ └── stack.zig │ │ ├── chapter_tree/ │ │ │ ├── avl_tree.zig │ │ │ ├── binary_search_tree.zig │ │ │ ├── binary_tree.zig │ │ │ ├── binary_tree_bfs.zig │ │ │ └── binary_tree_dfs.zig │ │ ├── include/ │ │ │ ├── PrintUtil.zig │ │ │ └── include.zig │ │ ├── main.zig │ │ └── utils/ │ │ ├── ListNode.zig │ │ ├── TreeNode.zig │ │ ├── format.zig │ │ └── utils.zig │ ├── docs/ │ │ ├── chapter_appendix/ │ │ │ ├── contribution.md │ │ │ ├── index.md │ │ │ ├── installation.md │ │ │ └── terminology.md │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.md │ │ │ ├── index.md │ │ │ ├── linked_list.md │ │ │ ├── list.md │ │ │ ├── ram_and_cache.md │ │ │ └── summary.md │ │ ├── chapter_backtracking/ │ │ │ ├── backtracking_algorithm.md │ │ │ ├── index.md │ │ │ ├── n_queens_problem.md │ │ │ ├── permutations_problem.md │ │ │ ├── subset_sum_problem.md │ │ │ └── summary.md │ │ ├── chapter_computational_complexity/ │ │ │ ├── index.md │ │ │ ├── iteration_and_recursion.md │ │ │ ├── performance_evaluation.md │ │ │ ├── space_complexity.md │ │ │ ├── summary.md │ │ │ └── time_complexity.md │ │ ├── chapter_data_structure/ │ │ │ ├── basic_data_types.md │ │ │ ├── character_encoding.md │ │ │ ├── classification_of_data_structure.md │ │ │ ├── index.md │ │ │ ├── number_encoding.md │ │ │ └── summary.md │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.md │ │ │ ├── build_binary_tree_problem.md │ │ │ ├── divide_and_conquer.md │ │ │ ├── hanota_problem.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_dynamic_programming/ │ │ │ ├── dp_problem_features.md │ │ │ ├── dp_solution_pipeline.md │ │ │ ├── edit_distance_problem.md │ │ │ ├── index.md │ │ │ ├── intro_to_dynamic_programming.md │ │ │ ├── knapsack_problem.md │ │ │ ├── summary.md │ │ │ └── unbounded_knapsack_problem.md │ │ ├── chapter_graph/ │ │ │ ├── graph.md │ │ │ ├── graph_operations.md │ │ │ ├── graph_traversal.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_greedy/ │ │ │ ├── fractional_knapsack_problem.md │ │ │ ├── greedy_algorithm.md │ │ │ ├── index.md │ │ │ ├── max_capacity_problem.md │ │ │ ├── max_product_cutting_problem.md │ │ │ └── summary.md │ │ ├── chapter_hashing/ │ │ │ ├── hash_algorithm.md │ │ │ ├── hash_collision.md │ │ │ ├── hash_map.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_heap/ │ │ │ ├── build_heap.md │ │ │ ├── heap.md │ │ │ ├── index.md │ │ │ ├── summary.md │ │ │ └── top_k.md │ │ ├── chapter_hello_algo/ │ │ │ └── index.md │ │ ├── chapter_introduction/ │ │ │ ├── algorithms_are_everywhere.md │ │ │ ├── index.md │ │ │ ├── summary.md │ │ │ └── what_is_dsa.md │ │ ├── chapter_paperbook/ │ │ │ └── index.md │ │ ├── chapter_preface/ │ │ │ ├── about_the_book.md │ │ │ ├── index.md │ │ │ ├── suggestions.md │ │ │ └── summary.md │ │ ├── chapter_reference/ │ │ │ └── index.md │ │ ├── chapter_searching/ │ │ │ ├── binary_search.md │ │ │ ├── binary_search_edge.md │ │ │ ├── binary_search_insertion.md │ │ │ ├── index.md │ │ │ ├── replace_linear_by_hashing.md │ │ │ ├── searching_algorithm_revisited.md │ │ │ └── summary.md │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.md │ │ │ ├── bucket_sort.md │ │ │ ├── counting_sort.md │ │ │ ├── heap_sort.md │ │ │ ├── index.md │ │ │ ├── insertion_sort.md │ │ │ ├── merge_sort.md │ │ │ ├── quick_sort.md │ │ │ ├── radix_sort.md │ │ │ ├── selection_sort.md │ │ │ ├── sorting_algorithm.md │ │ │ └── summary.md │ │ ├── chapter_stack_and_queue/ │ │ │ ├── deque.md │ │ │ ├── index.md │ │ │ ├── queue.md │ │ │ ├── stack.md │ │ │ └── summary.md │ │ ├── chapter_tree/ │ │ │ ├── array_representation_of_tree.md │ │ │ ├── avl_tree.md │ │ │ ├── binary_search_tree.md │ │ │ ├── binary_tree.md │ │ │ ├── binary_tree_traversal.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── index.html │ │ └── index.md │ └── mkdocs.yml ├── mkdocs.yml ├── overrides/ │ ├── javascripts/ │ │ ├── katex.js │ │ ├── mathjax.js │ │ └── starfield.js │ ├── main.html │ ├── partials/ │ │ ├── LICENSE │ │ ├── actions.html │ │ ├── comments.html │ │ └── content.html │ ├── stylesheets/ │ │ ├── extra.css │ │ ├── giscus-dark.css │ │ └── giscus-light.css │ └── zensical/ │ ├── javascripts/ │ │ └── animation_player.js │ ├── stylesheets/ │ │ ├── animation_player.css │ │ └── extra.css │ └── zensical.toml ├── ru/ │ ├── README.md │ ├── codes/ │ │ ├── Dockerfile │ │ ├── c/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array.c │ │ │ │ ├── linked_list.c │ │ │ │ └── my_list.c │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── n_queens.c │ │ │ │ ├── permutations_i.c │ │ │ │ ├── permutations_ii.c │ │ │ │ ├── preorder_traversal_i_compact.c │ │ │ │ ├── preorder_traversal_ii_compact.c │ │ │ │ ├── preorder_traversal_iii_compact.c │ │ │ │ ├── preorder_traversal_iii_template.c │ │ │ │ ├── subset_sum_i.c │ │ │ │ ├── subset_sum_i_naive.c │ │ │ │ └── subset_sum_ii.c │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── iteration.c │ │ │ │ ├── recursion.c │ │ │ │ ├── space_complexity.c │ │ │ │ ├── time_complexity.c │ │ │ │ └── worst_best_time_complexity.c │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search_recur.c │ │ │ │ ├── build_tree.c │ │ │ │ └── hanota.c │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── climbing_stairs_backtrack.c │ │ │ │ ├── climbing_stairs_constraint_dp.c │ │ │ │ ├── climbing_stairs_dfs.c │ │ │ │ ├── climbing_stairs_dfs_mem.c │ │ │ │ ├── climbing_stairs_dp.c │ │ │ │ ├── coin_change.c │ │ │ │ ├── coin_change_ii.c │ │ │ │ ├── edit_distance.c │ │ │ │ ├── knapsack.c │ │ │ │ ├── min_cost_climbing_stairs_dp.c │ │ │ │ ├── min_path_sum.c │ │ │ │ └── unbounded_knapsack.c │ │ │ ├── chapter_graph/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── graph_adjacency_list.c │ │ │ │ ├── graph_adjacency_list_test.c │ │ │ │ ├── graph_adjacency_matrix.c │ │ │ │ ├── graph_bfs.c │ │ │ │ └── graph_dfs.c │ │ │ ├── chapter_greedy/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── coin_change_greedy.c │ │ │ │ ├── fractional_knapsack.c │ │ │ │ ├── max_capacity.c │ │ │ │ └── max_product_cutting.c │ │ │ ├── chapter_hashing/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_hash_map.c │ │ │ │ ├── hash_map_chaining.c │ │ │ │ ├── hash_map_open_addressing.c │ │ │ │ └── simple_hash.c │ │ │ ├── chapter_heap/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── my_heap.c │ │ │ │ ├── my_heap_test.c │ │ │ │ └── top_k.c │ │ │ ├── chapter_searching/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search.c │ │ │ │ ├── binary_search_edge.c │ │ │ │ ├── binary_search_insertion.c │ │ │ │ └── two_sum.c │ │ │ ├── chapter_sorting/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bubble_sort.c │ │ │ │ ├── bucket_sort.c │ │ │ │ ├── counting_sort.c │ │ │ │ ├── heap_sort.c │ │ │ │ ├── insertion_sort.c │ │ │ │ ├── merge_sort.c │ │ │ │ ├── quick_sort.c │ │ │ │ ├── radix_sort.c │ │ │ │ └── selection_sort.c │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_deque.c │ │ │ │ ├── array_queue.c │ │ │ │ ├── array_stack.c │ │ │ │ ├── linkedlist_deque.c │ │ │ │ ├── linkedlist_queue.c │ │ │ │ └── linkedlist_stack.c │ │ │ ├── chapter_tree/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_binary_tree.c │ │ │ │ ├── avl_tree.c │ │ │ │ ├── binary_search_tree.c │ │ │ │ ├── binary_tree.c │ │ │ │ ├── binary_tree_bfs.c │ │ │ │ └── binary_tree_dfs.c │ │ │ └── utils/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.h │ │ │ ├── common_test.c │ │ │ ├── list_node.h │ │ │ ├── print_util.h │ │ │ ├── tree_node.h │ │ │ ├── uthash.h │ │ │ ├── vector.h │ │ │ └── vertex.h │ │ ├── cpp/ │ │ │ ├── .gitignore │ │ │ ├── CMakeLists.txt │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array.cpp │ │ │ │ ├── linked_list.cpp │ │ │ │ ├── list.cpp │ │ │ │ └── my_list.cpp │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── n_queens.cpp │ │ │ │ ├── permutations_i.cpp │ │ │ │ ├── permutations_ii.cpp │ │ │ │ ├── preorder_traversal_i_compact.cpp │ │ │ │ ├── preorder_traversal_ii_compact.cpp │ │ │ │ ├── preorder_traversal_iii_compact.cpp │ │ │ │ ├── preorder_traversal_iii_template.cpp │ │ │ │ ├── subset_sum_i.cpp │ │ │ │ ├── subset_sum_i_naive.cpp │ │ │ │ └── subset_sum_ii.cpp │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── iteration.cpp │ │ │ │ ├── recursion.cpp │ │ │ │ ├── space_complexity.cpp │ │ │ │ ├── time_complexity.cpp │ │ │ │ └── worst_best_time_complexity.cpp │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search_recur.cpp │ │ │ │ ├── build_tree.cpp │ │ │ │ └── hanota.cpp │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── climbing_stairs_backtrack.cpp │ │ │ │ ├── climbing_stairs_constraint_dp.cpp │ │ │ │ ├── climbing_stairs_dfs.cpp │ │ │ │ ├── climbing_stairs_dfs_mem.cpp │ │ │ │ ├── climbing_stairs_dp.cpp │ │ │ │ ├── coin_change.cpp │ │ │ │ ├── coin_change_ii.cpp │ │ │ │ ├── edit_distance.cpp │ │ │ │ ├── knapsack.cpp │ │ │ │ ├── min_cost_climbing_stairs_dp.cpp │ │ │ │ ├── min_path_sum.cpp │ │ │ │ └── unbounded_knapsack.cpp │ │ │ ├── chapter_graph/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── graph_adjacency_list.cpp │ │ │ │ ├── graph_adjacency_list_test.cpp │ │ │ │ ├── graph_adjacency_matrix.cpp │ │ │ │ ├── graph_bfs.cpp │ │ │ │ └── graph_dfs.cpp │ │ │ ├── chapter_greedy/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── coin_change_greedy.cpp │ │ │ │ ├── fractional_knapsack.cpp │ │ │ │ ├── max_capacity.cpp │ │ │ │ └── max_product_cutting.cpp │ │ │ ├── chapter_hashing/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_hash_map.cpp │ │ │ │ ├── array_hash_map_test.cpp │ │ │ │ ├── built_in_hash.cpp │ │ │ │ ├── hash_map.cpp │ │ │ │ ├── hash_map_chaining.cpp │ │ │ │ ├── hash_map_open_addressing.cpp │ │ │ │ └── simple_hash.cpp │ │ │ ├── chapter_heap/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── heap.cpp │ │ │ │ ├── my_heap.cpp │ │ │ │ └── top_k.cpp │ │ │ ├── chapter_searching/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── binary_search.cpp │ │ │ │ ├── binary_search_edge.cpp │ │ │ │ ├── binary_search_insertion.cpp │ │ │ │ ├── hashing_search.cpp │ │ │ │ ├── linear_search.cpp │ │ │ │ └── two_sum.cpp │ │ │ ├── chapter_sorting/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── bubble_sort.cpp │ │ │ │ ├── bucket_sort.cpp │ │ │ │ ├── counting_sort.cpp │ │ │ │ ├── heap_sort.cpp │ │ │ │ ├── insertion_sort.cpp │ │ │ │ ├── merge_sort.cpp │ │ │ │ ├── quick_sort.cpp │ │ │ │ ├── radix_sort.cpp │ │ │ │ └── selection_sort.cpp │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_deque.cpp │ │ │ │ ├── array_queue.cpp │ │ │ │ ├── array_stack.cpp │ │ │ │ ├── deque.cpp │ │ │ │ ├── linkedlist_deque.cpp │ │ │ │ ├── linkedlist_queue.cpp │ │ │ │ ├── linkedlist_stack.cpp │ │ │ │ ├── queue.cpp │ │ │ │ └── stack.cpp │ │ │ ├── chapter_tree/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── array_binary_tree.cpp │ │ │ │ ├── avl_tree.cpp │ │ │ │ ├── binary_search_tree.cpp │ │ │ │ ├── binary_tree.cpp │ │ │ │ ├── binary_tree_bfs.cpp │ │ │ │ └── binary_tree_dfs.cpp │ │ │ └── utils/ │ │ │ ├── CMakeLists.txt │ │ │ ├── common.hpp │ │ │ ├── list_node.hpp │ │ │ ├── print_utils.hpp │ │ │ ├── tree_node.hpp │ │ │ └── vertex.hpp │ │ ├── csharp/ │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── GlobalUsing.cs │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.cs │ │ │ │ ├── linked_list.cs │ │ │ │ ├── list.cs │ │ │ │ └── my_list.cs │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.cs │ │ │ │ ├── permutations_i.cs │ │ │ │ ├── permutations_ii.cs │ │ │ │ ├── preorder_traversal_i_compact.cs │ │ │ │ ├── preorder_traversal_ii_compact.cs │ │ │ │ ├── preorder_traversal_iii_compact.cs │ │ │ │ ├── preorder_traversal_iii_template.cs │ │ │ │ ├── subset_sum_i.cs │ │ │ │ ├── subset_sum_i_naive.cs │ │ │ │ └── subset_sum_ii.cs │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.cs │ │ │ │ ├── recursion.cs │ │ │ │ ├── space_complexity.cs │ │ │ │ ├── time_complexity.cs │ │ │ │ └── worst_best_time_complexity.cs │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.cs │ │ │ │ ├── build_tree.cs │ │ │ │ └── hanota.cs │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.cs │ │ │ │ ├── climbing_stairs_constraint_dp.cs │ │ │ │ ├── climbing_stairs_dfs.cs │ │ │ │ ├── climbing_stairs_dfs_mem.cs │ │ │ │ ├── climbing_stairs_dp.cs │ │ │ │ ├── coin_change.cs │ │ │ │ ├── coin_change_ii.cs │ │ │ │ ├── edit_distance.cs │ │ │ │ ├── knapsack.cs │ │ │ │ ├── min_cost_climbing_stairs_dp.cs │ │ │ │ ├── min_path_sum.cs │ │ │ │ └── unbounded_knapsack.cs │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.cs │ │ │ │ ├── graph_adjacency_matrix.cs │ │ │ │ ├── graph_bfs.cs │ │ │ │ └── graph_dfs.cs │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.cs │ │ │ │ ├── fractional_knapsack.cs │ │ │ │ ├── max_capacity.cs │ │ │ │ └── max_product_cutting.cs │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.cs │ │ │ │ ├── built_in_hash.cs │ │ │ │ ├── hash_map.cs │ │ │ │ ├── hash_map_chaining.cs │ │ │ │ ├── hash_map_open_addressing.cs │ │ │ │ └── simple_hash.cs │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.cs │ │ │ │ ├── my_heap.cs │ │ │ │ └── top_k.cs │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.cs │ │ │ │ ├── binary_search_edge.cs │ │ │ │ ├── binary_search_insertion.cs │ │ │ │ ├── hashing_search.cs │ │ │ │ ├── linear_search.cs │ │ │ │ └── two_sum.cs │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.cs │ │ │ │ ├── bucket_sort.cs │ │ │ │ ├── counting_sort.cs │ │ │ │ ├── heap_sort.cs │ │ │ │ ├── insertion_sort.cs │ │ │ │ ├── merge_sort.cs │ │ │ │ ├── quick_sort.cs │ │ │ │ ├── radix_sort.cs │ │ │ │ └── selection_sort.cs │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.cs │ │ │ │ ├── array_queue.cs │ │ │ │ ├── array_stack.cs │ │ │ │ ├── deque.cs │ │ │ │ ├── linkedlist_deque.cs │ │ │ │ ├── linkedlist_queue.cs │ │ │ │ ├── linkedlist_stack.cs │ │ │ │ ├── queue.cs │ │ │ │ └── stack.cs │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.cs │ │ │ │ ├── avl_tree.cs │ │ │ │ ├── binary_search_tree.cs │ │ │ │ ├── binary_tree.cs │ │ │ │ ├── binary_tree_bfs.cs │ │ │ │ └── binary_tree_dfs.cs │ │ │ ├── csharp.sln │ │ │ ├── hello-algo.csproj │ │ │ └── utils/ │ │ │ ├── ListNode.cs │ │ │ ├── PrintUtil.cs │ │ │ ├── TreeNode.cs │ │ │ └── Vertex.cs │ │ ├── dart/ │ │ │ ├── build.dart │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.dart │ │ │ │ ├── linked_list.dart │ │ │ │ ├── list.dart │ │ │ │ └── my_list.dart │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.dart │ │ │ │ ├── permutations_i.dart │ │ │ │ ├── permutations_ii.dart │ │ │ │ ├── preorder_traversal_i_compact.dart │ │ │ │ ├── preorder_traversal_ii_compact.dart │ │ │ │ ├── preorder_traversal_iii_compact.dart │ │ │ │ ├── preorder_traversal_iii_template.dart │ │ │ │ ├── subset_sum_i.dart │ │ │ │ ├── subset_sum_i_naive.dart │ │ │ │ └── subset_sum_ii.dart │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.dart │ │ │ │ ├── recursion.dart │ │ │ │ ├── space_complexity.dart │ │ │ │ ├── time_complexity.dart │ │ │ │ └── worst_best_time_complexity.dart │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.dart │ │ │ │ ├── build_tree.dart │ │ │ │ └── hanota.dart │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.dart │ │ │ │ ├── climbing_stairs_constraint_dp.dart │ │ │ │ ├── climbing_stairs_dfs.dart │ │ │ │ ├── climbing_stairs_dfs_mem.dart │ │ │ │ ├── climbing_stairs_dp.dart │ │ │ │ ├── coin_change.dart │ │ │ │ ├── coin_change_ii.dart │ │ │ │ ├── edit_distance.dart │ │ │ │ ├── knapsack.dart │ │ │ │ ├── min_cost_climbing_stairs_dp.dart │ │ │ │ ├── min_path_sum.dart │ │ │ │ └── unbounded_knapsack.dart │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.dart │ │ │ │ ├── graph_adjacency_matrix.dart │ │ │ │ ├── graph_bfs.dart │ │ │ │ └── graph_dfs.dart │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.dart │ │ │ │ ├── fractional_knapsack.dart │ │ │ │ ├── max_capacity.dart │ │ │ │ └── max_product_cutting.dart │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.dart │ │ │ │ ├── built_in_hash.dart │ │ │ │ ├── hash_map.dart │ │ │ │ ├── hash_map_chaining.dart │ │ │ │ ├── hash_map_open_addressing.dart │ │ │ │ └── simple_hash.dart │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.dart │ │ │ │ └── top_k.dart │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.dart │ │ │ │ ├── binary_search_edge.dart │ │ │ │ ├── binary_search_insertion.dart │ │ │ │ ├── hashing_search.dart │ │ │ │ ├── linear_search.dart │ │ │ │ └── two_sum.dart │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.dart │ │ │ │ ├── bucket_sort.dart │ │ │ │ ├── counting_sort.dart │ │ │ │ ├── heap_sort.dart │ │ │ │ ├── insertion_sort.dart │ │ │ │ ├── merge_sort.dart │ │ │ │ ├── quick_sort.dart │ │ │ │ ├── radix_sort.dart │ │ │ │ └── selection_sort.dart │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.dart │ │ │ │ ├── array_queue.dart │ │ │ │ ├── array_stack.dart │ │ │ │ ├── deque.dart │ │ │ │ ├── linkedlist_deque.dart │ │ │ │ ├── linkedlist_queue.dart │ │ │ │ ├── linkedlist_stack.dart │ │ │ │ ├── queue.dart │ │ │ │ └── stack.dart │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.dart │ │ │ │ ├── avl_tree.dart │ │ │ │ ├── binary_search_tree.dart │ │ │ │ ├── binary_tree.dart │ │ │ │ ├── binary_tree_bfs.dart │ │ │ │ └── binary_tree_dfs.dart │ │ │ └── utils/ │ │ │ ├── list_node.dart │ │ │ ├── print_util.dart │ │ │ ├── tree_node.dart │ │ │ └── vertex.dart │ │ ├── docker-compose.yml │ │ ├── go/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.go │ │ │ │ ├── array_test.go │ │ │ │ ├── linked_list.go │ │ │ │ ├── linked_list_test.go │ │ │ │ ├── list_test.go │ │ │ │ ├── my_list.go │ │ │ │ └── my_list_test.go │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.go │ │ │ │ ├── n_queens_test.go │ │ │ │ ├── permutation_test.go │ │ │ │ ├── permutations_i.go │ │ │ │ ├── permutations_ii.go │ │ │ │ ├── preorder_traversal_i_compact.go │ │ │ │ ├── preorder_traversal_ii_compact.go │ │ │ │ ├── preorder_traversal_iii_compact.go │ │ │ │ ├── preorder_traversal_iii_template.go │ │ │ │ ├── preorder_traversal_test.go │ │ │ │ ├── subset_sum_i.go │ │ │ │ ├── subset_sum_i_naive.go │ │ │ │ ├── subset_sum_ii.go │ │ │ │ └── subset_sum_test.go │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.go │ │ │ │ ├── iteration_test.go │ │ │ │ ├── recursion.go │ │ │ │ ├── recursion_test.go │ │ │ │ ├── space_complexity.go │ │ │ │ ├── space_complexity_test.go │ │ │ │ ├── time_complexity.go │ │ │ │ ├── time_complexity_test.go │ │ │ │ ├── worst_best_time_complexity.go │ │ │ │ └── worst_best_time_complexity_test.go │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.go │ │ │ │ ├── binary_search_recur_test.go │ │ │ │ ├── build_tree.go │ │ │ │ ├── build_tree_test.go │ │ │ │ ├── hanota.go │ │ │ │ └── hanota_test.go │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.go │ │ │ │ ├── climbing_stairs_constraint_dp.go │ │ │ │ ├── climbing_stairs_dfs.go │ │ │ │ ├── climbing_stairs_dfs_mem.go │ │ │ │ ├── climbing_stairs_dp.go │ │ │ │ ├── climbing_stairs_test.go │ │ │ │ ├── coin_change.go │ │ │ │ ├── coin_change_ii.go │ │ │ │ ├── coin_change_test.go │ │ │ │ ├── edit_distance.go │ │ │ │ ├── edit_distance_test.go │ │ │ │ ├── knapsack.go │ │ │ │ ├── knapsack_test.go │ │ │ │ ├── min_cost_climbing_stairs_dp.go │ │ │ │ ├── min_path_sum.go │ │ │ │ ├── min_path_sum_test.go │ │ │ │ └── unbounded_knapsack.go │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.go │ │ │ │ ├── graph_adjacency_list_test.go │ │ │ │ ├── graph_adjacency_matrix.go │ │ │ │ ├── graph_adjacency_matrix_test.go │ │ │ │ ├── graph_bfs.go │ │ │ │ ├── graph_bfs_test.go │ │ │ │ ├── graph_dfs.go │ │ │ │ └── graph_dfs_test.go │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.go │ │ │ │ ├── coin_change_greedy_test.go │ │ │ │ ├── fractional_knapsack.go │ │ │ │ ├── fractional_knapsack_test.go │ │ │ │ ├── max_capacity.go │ │ │ │ ├── max_capacity_test.go │ │ │ │ ├── max_product_cutting.go │ │ │ │ └── max_product_cutting_test.go │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.go │ │ │ │ ├── array_hash_map_test.go │ │ │ │ ├── hash_collision_test.go │ │ │ │ ├── hash_map_chaining.go │ │ │ │ ├── hash_map_open_addressing.go │ │ │ │ ├── hash_map_test.go │ │ │ │ └── simple_hash.go │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.go │ │ │ │ ├── heap_test.go │ │ │ │ ├── my_heap.go │ │ │ │ └── top_k.go │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.go │ │ │ │ ├── binary_search_edge.go │ │ │ │ ├── binary_search_insertion.go │ │ │ │ ├── binary_search_test.go │ │ │ │ ├── hashing_search.go │ │ │ │ ├── hashing_search_test.go │ │ │ │ ├── linear_search.go │ │ │ │ ├── linear_search_test.go │ │ │ │ ├── two_sum.go │ │ │ │ └── two_sum_test.go │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.go │ │ │ │ ├── bubble_sort_test.go │ │ │ │ ├── bucket_sort.go │ │ │ │ ├── bucket_sort_test.go │ │ │ │ ├── counting_sort.go │ │ │ │ ├── counting_sort_test.go │ │ │ │ ├── heap_sort.go │ │ │ │ ├── heap_sort_test.go │ │ │ │ ├── insertion_sort.go │ │ │ │ ├── insertion_sort_test.go │ │ │ │ ├── merge_sort.go │ │ │ │ ├── merge_sort_test.go │ │ │ │ ├── quick_sort.go │ │ │ │ ├── quick_sort_test.go │ │ │ │ ├── radix_sort.go │ │ │ │ ├── radix_sort_test.go │ │ │ │ ├── selection_sort.go │ │ │ │ └── selection_sort_test.go │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.go │ │ │ │ ├── array_queue.go │ │ │ │ ├── array_stack.go │ │ │ │ ├── deque_test.go │ │ │ │ ├── linkedlist_deque.go │ │ │ │ ├── linkedlist_queue.go │ │ │ │ ├── linkedlist_stack.go │ │ │ │ ├── queue_test.go │ │ │ │ └── stack_test.go │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.go │ │ │ │ ├── array_binary_tree_test.go │ │ │ │ ├── avl_tree.go │ │ │ │ ├── avl_tree_test.go │ │ │ │ ├── binary_search_tree.go │ │ │ │ ├── binary_search_tree_test.go │ │ │ │ ├── binary_tree_bfs.go │ │ │ │ ├── binary_tree_bfs_test.go │ │ │ │ ├── binary_tree_dfs.go │ │ │ │ ├── binary_tree_dfs_test.go │ │ │ │ └── binary_tree_test.go │ │ │ ├── go.mod │ │ │ └── pkg/ │ │ │ ├── list_node.go │ │ │ ├── list_node_test.go │ │ │ ├── print_utils.go │ │ │ ├── tree_node.go │ │ │ ├── tree_node_test.go │ │ │ └── vertex.go │ │ ├── java/ │ │ │ ├── .gitignore │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.java │ │ │ │ ├── linked_list.java │ │ │ │ ├── list.java │ │ │ │ └── my_list.java │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.java │ │ │ │ ├── permutations_i.java │ │ │ │ ├── permutations_ii.java │ │ │ │ ├── preorder_traversal_i_compact.java │ │ │ │ ├── preorder_traversal_ii_compact.java │ │ │ │ ├── preorder_traversal_iii_compact.java │ │ │ │ ├── preorder_traversal_iii_template.java │ │ │ │ ├── subset_sum_i.java │ │ │ │ ├── subset_sum_i_naive.java │ │ │ │ └── subset_sum_ii.java │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.java │ │ │ │ ├── recursion.java │ │ │ │ ├── space_complexity.java │ │ │ │ ├── time_complexity.java │ │ │ │ └── worst_best_time_complexity.java │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.java │ │ │ │ ├── build_tree.java │ │ │ │ └── hanota.java │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.java │ │ │ │ ├── climbing_stairs_constraint_dp.java │ │ │ │ ├── climbing_stairs_dfs.java │ │ │ │ ├── climbing_stairs_dfs_mem.java │ │ │ │ ├── climbing_stairs_dp.java │ │ │ │ ├── coin_change.java │ │ │ │ ├── coin_change_ii.java │ │ │ │ ├── edit_distance.java │ │ │ │ ├── knapsack.java │ │ │ │ ├── min_cost_climbing_stairs_dp.java │ │ │ │ ├── min_path_sum.java │ │ │ │ └── unbounded_knapsack.java │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.java │ │ │ │ ├── graph_adjacency_matrix.java │ │ │ │ ├── graph_bfs.java │ │ │ │ └── graph_dfs.java │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.java │ │ │ │ ├── fractional_knapsack.java │ │ │ │ ├── max_capacity.java │ │ │ │ └── max_product_cutting.java │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.java │ │ │ │ ├── built_in_hash.java │ │ │ │ ├── hash_map.java │ │ │ │ ├── hash_map_chaining.java │ │ │ │ ├── hash_map_open_addressing.java │ │ │ │ └── simple_hash.java │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.java │ │ │ │ ├── my_heap.java │ │ │ │ └── top_k.java │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.java │ │ │ │ ├── binary_search_edge.java │ │ │ │ ├── binary_search_insertion.java │ │ │ │ ├── hashing_search.java │ │ │ │ ├── linear_search.java │ │ │ │ └── two_sum.java │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.java │ │ │ │ ├── bucket_sort.java │ │ │ │ ├── counting_sort.java │ │ │ │ ├── heap_sort.java │ │ │ │ ├── insertion_sort.java │ │ │ │ ├── merge_sort.java │ │ │ │ ├── quick_sort.java │ │ │ │ ├── radix_sort.java │ │ │ │ └── selection_sort.java │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.java │ │ │ │ ├── array_queue.java │ │ │ │ ├── array_stack.java │ │ │ │ ├── deque.java │ │ │ │ ├── linkedlist_deque.java │ │ │ │ ├── linkedlist_queue.java │ │ │ │ ├── linkedlist_stack.java │ │ │ │ ├── queue.java │ │ │ │ └── stack.java │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.java │ │ │ │ ├── avl_tree.java │ │ │ │ ├── binary_search_tree.java │ │ │ │ ├── binary_tree.java │ │ │ │ ├── binary_tree_bfs.java │ │ │ │ └── binary_tree_dfs.java │ │ │ └── utils/ │ │ │ ├── ListNode.java │ │ │ ├── PrintUtil.java │ │ │ ├── TreeNode.java │ │ │ └── Vertex.java │ │ ├── javascript/ │ │ │ ├── .prettierrc │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.js │ │ │ │ ├── linked_list.js │ │ │ │ ├── list.js │ │ │ │ └── my_list.js │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.js │ │ │ │ ├── permutations_i.js │ │ │ │ ├── permutations_ii.js │ │ │ │ ├── preorder_traversal_i_compact.js │ │ │ │ ├── preorder_traversal_ii_compact.js │ │ │ │ ├── preorder_traversal_iii_compact.js │ │ │ │ ├── preorder_traversal_iii_template.js │ │ │ │ ├── subset_sum_i.js │ │ │ │ ├── subset_sum_i_naive.js │ │ │ │ └── subset_sum_ii.js │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.js │ │ │ │ ├── recursion.js │ │ │ │ ├── space_complexity.js │ │ │ │ ├── time_complexity.js │ │ │ │ └── worst_best_time_complexity.js │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.js │ │ │ │ ├── build_tree.js │ │ │ │ └── hanota.js │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.js │ │ │ │ ├── climbing_stairs_constraint_dp.js │ │ │ │ ├── climbing_stairs_dfs.js │ │ │ │ ├── climbing_stairs_dfs_mem.js │ │ │ │ ├── climbing_stairs_dp.js │ │ │ │ ├── coin_change.js │ │ │ │ ├── coin_change_ii.js │ │ │ │ ├── edit_distance.js │ │ │ │ ├── knapsack.js │ │ │ │ ├── min_cost_climbing_stairs_dp.js │ │ │ │ ├── min_path_sum.js │ │ │ │ └── unbounded_knapsack.js │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.js │ │ │ │ ├── graph_adjacency_matrix.js │ │ │ │ ├── graph_bfs.js │ │ │ │ └── graph_dfs.js │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.js │ │ │ │ ├── fractional_knapsack.js │ │ │ │ ├── max_capacity.js │ │ │ │ └── max_product_cutting.js │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.js │ │ │ │ ├── hash_map.js │ │ │ │ ├── hash_map_chaining.js │ │ │ │ ├── hash_map_open_addressing.js │ │ │ │ └── simple_hash.js │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.js │ │ │ │ └── top_k.js │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.js │ │ │ │ ├── binary_search_edge.js │ │ │ │ ├── binary_search_insertion.js │ │ │ │ ├── hashing_search.js │ │ │ │ ├── linear_search.js │ │ │ │ └── two_sum.js │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.js │ │ │ │ ├── bucket_sort.js │ │ │ │ ├── counting_sort.js │ │ │ │ ├── heap_sort.js │ │ │ │ ├── insertion_sort.js │ │ │ │ ├── merge_sort.js │ │ │ │ ├── quick_sort.js │ │ │ │ ├── radix_sort.js │ │ │ │ └── selection_sort.js │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.js │ │ │ │ ├── array_queue.js │ │ │ │ ├── array_stack.js │ │ │ │ ├── deque.js │ │ │ │ ├── linkedlist_deque.js │ │ │ │ ├── linkedlist_queue.js │ │ │ │ ├── linkedlist_stack.js │ │ │ │ ├── queue.js │ │ │ │ └── stack.js │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.js │ │ │ │ ├── avl_tree.js │ │ │ │ ├── binary_search_tree.js │ │ │ │ ├── binary_tree.js │ │ │ │ ├── binary_tree_bfs.js │ │ │ │ └── binary_tree_dfs.js │ │ │ ├── modules/ │ │ │ │ ├── ListNode.js │ │ │ │ ├── PrintUtil.js │ │ │ │ ├── TreeNode.js │ │ │ │ └── Vertex.js │ │ │ └── test_all.js │ │ ├── kotlin/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.kt │ │ │ │ ├── linked_list.kt │ │ │ │ ├── list.kt │ │ │ │ └── my_list.kt │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.kt │ │ │ │ ├── permutations_i.kt │ │ │ │ ├── permutations_ii.kt │ │ │ │ ├── preorder_traversal_i_compact.kt │ │ │ │ ├── preorder_traversal_ii_compact.kt │ │ │ │ ├── preorder_traversal_iii_compact.kt │ │ │ │ ├── preorder_traversal_iii_template.kt │ │ │ │ ├── subset_sum_i.kt │ │ │ │ ├── subset_sum_i_naive.kt │ │ │ │ └── subset_sum_ii.kt │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.kt │ │ │ │ ├── recursion.kt │ │ │ │ ├── space_complexity.kt │ │ │ │ ├── time_complexity.kt │ │ │ │ └── worst_best_time_complexity.kt │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.kt │ │ │ │ ├── build_tree.kt │ │ │ │ └── hanota.kt │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.kt │ │ │ │ ├── climbing_stairs_constraint_dp.kt │ │ │ │ ├── climbing_stairs_dfs.kt │ │ │ │ ├── climbing_stairs_dfs_mem.kt │ │ │ │ ├── climbing_stairs_dp.kt │ │ │ │ ├── coin_change.kt │ │ │ │ ├── coin_change_ii.kt │ │ │ │ ├── edit_distance.kt │ │ │ │ ├── knapsack.kt │ │ │ │ ├── min_cost_climbing_stairs_dp.kt │ │ │ │ ├── min_path_sum.kt │ │ │ │ └── unbounded_knapsack.kt │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.kt │ │ │ │ ├── graph_adjacency_matrix.kt │ │ │ │ ├── graph_bfs.kt │ │ │ │ └── graph_dfs.kt │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.kt │ │ │ │ ├── fractional_knapsack.kt │ │ │ │ ├── max_capacity.kt │ │ │ │ └── max_product_cutting.kt │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.kt │ │ │ │ ├── built_in_hash.kt │ │ │ │ ├── hash_map.kt │ │ │ │ ├── hash_map_chaining.kt │ │ │ │ ├── hash_map_open_addressing.kt │ │ │ │ └── simple_hash.kt │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.kt │ │ │ │ ├── my_heap.kt │ │ │ │ └── top_k.kt │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.kt │ │ │ │ ├── binary_search_edge.kt │ │ │ │ ├── binary_search_insertion.kt │ │ │ │ ├── hashing_search.kt │ │ │ │ ├── linear_search.kt │ │ │ │ └── two_sum.kt │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.kt │ │ │ │ ├── bucket_sort.kt │ │ │ │ ├── counting_sort.kt │ │ │ │ ├── heap_sort.kt │ │ │ │ ├── insertion_sort.kt │ │ │ │ ├── merge_sort.kt │ │ │ │ ├── quick_sort.kt │ │ │ │ ├── radix_sort.kt │ │ │ │ └── selection_sort.kt │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.kt │ │ │ │ ├── array_queue.kt │ │ │ │ ├── array_stack.kt │ │ │ │ ├── deque.kt │ │ │ │ ├── linkedlist_deque.kt │ │ │ │ ├── linkedlist_queue.kt │ │ │ │ ├── linkedlist_stack.kt │ │ │ │ ├── queue.kt │ │ │ │ └── stack.kt │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.kt │ │ │ │ ├── avl_tree.kt │ │ │ │ ├── binary_search_tree.kt │ │ │ │ ├── binary_tree.kt │ │ │ │ ├── binary_tree_bfs.kt │ │ │ │ └── binary_tree_dfs.kt │ │ │ └── utils/ │ │ │ ├── ListNode.kt │ │ │ ├── PrintUtil.kt │ │ │ ├── TreeNode.kt │ │ │ └── Vertex.kt │ │ ├── python/ │ │ │ ├── .gitignore │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.py │ │ │ │ ├── linked_list.py │ │ │ │ ├── list.py │ │ │ │ └── my_list.py │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.py │ │ │ │ ├── permutations_i.py │ │ │ │ ├── permutations_ii.py │ │ │ │ ├── preorder_traversal_i_compact.py │ │ │ │ ├── preorder_traversal_ii_compact.py │ │ │ │ ├── preorder_traversal_iii_compact.py │ │ │ │ ├── preorder_traversal_iii_template.py │ │ │ │ ├── subset_sum_i.py │ │ │ │ ├── subset_sum_i_naive.py │ │ │ │ └── subset_sum_ii.py │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.py │ │ │ │ ├── recursion.py │ │ │ │ ├── space_complexity.py │ │ │ │ ├── time_complexity.py │ │ │ │ └── worst_best_time_complexity.py │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.py │ │ │ │ ├── build_tree.py │ │ │ │ └── hanota.py │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.py │ │ │ │ ├── climbing_stairs_constraint_dp.py │ │ │ │ ├── climbing_stairs_dfs.py │ │ │ │ ├── climbing_stairs_dfs_mem.py │ │ │ │ ├── climbing_stairs_dp.py │ │ │ │ ├── coin_change.py │ │ │ │ ├── coin_change_ii.py │ │ │ │ ├── edit_distance.py │ │ │ │ ├── knapsack.py │ │ │ │ ├── min_cost_climbing_stairs_dp.py │ │ │ │ ├── min_path_sum.py │ │ │ │ └── unbounded_knapsack.py │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.py │ │ │ │ ├── graph_adjacency_matrix.py │ │ │ │ ├── graph_bfs.py │ │ │ │ └── graph_dfs.py │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.py │ │ │ │ ├── fractional_knapsack.py │ │ │ │ ├── max_capacity.py │ │ │ │ └── max_product_cutting.py │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.py │ │ │ │ ├── built_in_hash.py │ │ │ │ ├── hash_map.py │ │ │ │ ├── hash_map_chaining.py │ │ │ │ ├── hash_map_open_addressing.py │ │ │ │ └── simple_hash.py │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.py │ │ │ │ ├── my_heap.py │ │ │ │ └── top_k.py │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.py │ │ │ │ ├── binary_search_edge.py │ │ │ │ ├── binary_search_insertion.py │ │ │ │ ├── hashing_search.py │ │ │ │ ├── linear_search.py │ │ │ │ └── two_sum.py │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.py │ │ │ │ ├── bucket_sort.py │ │ │ │ ├── counting_sort.py │ │ │ │ ├── heap_sort.py │ │ │ │ ├── insertion_sort.py │ │ │ │ ├── merge_sort.py │ │ │ │ ├── quick_sort.py │ │ │ │ ├── radix_sort.py │ │ │ │ └── selection_sort.py │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.py │ │ │ │ ├── array_queue.py │ │ │ │ ├── array_stack.py │ │ │ │ ├── deque.py │ │ │ │ ├── linkedlist_deque.py │ │ │ │ ├── linkedlist_queue.py │ │ │ │ ├── linkedlist_stack.py │ │ │ │ ├── queue.py │ │ │ │ └── stack.py │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.py │ │ │ │ ├── avl_tree.py │ │ │ │ ├── binary_search_tree.py │ │ │ │ ├── binary_tree.py │ │ │ │ ├── binary_tree_bfs.py │ │ │ │ └── binary_tree_dfs.py │ │ │ ├── modules/ │ │ │ │ ├── __init__.py │ │ │ │ ├── list_node.py │ │ │ │ ├── print_util.py │ │ │ │ ├── tree_node.py │ │ │ │ └── vertex.py │ │ │ └── test_all.py │ │ ├── pythontutor/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.md │ │ │ │ ├── linked_list.md │ │ │ │ └── my_list.md │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.md │ │ │ │ ├── permutations_i.md │ │ │ │ ├── permutations_ii.md │ │ │ │ ├── preorder_traversal_i_compact.md │ │ │ │ ├── preorder_traversal_ii_compact.md │ │ │ │ ├── preorder_traversal_iii_compact.md │ │ │ │ ├── preorder_traversal_iii_template.md │ │ │ │ ├── subset_sum_i.md │ │ │ │ ├── subset_sum_i_naive.md │ │ │ │ └── subset_sum_ii.md │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.md │ │ │ │ ├── recursion.md │ │ │ │ ├── space_complexity.md │ │ │ │ ├── time_complexity.md │ │ │ │ └── worst_best_time_complexity.md │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.md │ │ │ │ ├── build_tree.md │ │ │ │ └── hanota.md │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.md │ │ │ │ ├── climbing_stairs_constraint_dp.md │ │ │ │ ├── climbing_stairs_dfs.md │ │ │ │ ├── climbing_stairs_dfs_mem.md │ │ │ │ ├── climbing_stairs_dp.md │ │ │ │ ├── coin_change.md │ │ │ │ ├── coin_change_ii.md │ │ │ │ ├── edit_distance.md │ │ │ │ ├── knapsack.md │ │ │ │ ├── min_cost_climbing_stairs_dp.md │ │ │ │ ├── min_path_sum.md │ │ │ │ └── unbounded_knapsack.md │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.md │ │ │ │ ├── graph_adjacency_matrix.md │ │ │ │ ├── graph_bfs.md │ │ │ │ └── graph_dfs.md │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.md │ │ │ │ ├── fractional_knapsack.md │ │ │ │ ├── max_capacity.md │ │ │ │ └── max_product_cutting.md │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.md │ │ │ │ ├── hash_map_chaining.md │ │ │ │ └── simple_hash.md │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.md │ │ │ │ └── top_k.md │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.md │ │ │ │ ├── binary_search_edge.md │ │ │ │ ├── binary_search_insertion.md │ │ │ │ └── two_sum.md │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.md │ │ │ │ ├── bucket_sort.md │ │ │ │ ├── counting_sort.md │ │ │ │ ├── heap_sort.md │ │ │ │ ├── insertion_sort.md │ │ │ │ ├── merge_sort.md │ │ │ │ ├── quick_sort.md │ │ │ │ ├── radix_sort.md │ │ │ │ └── selection_sort.md │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_queue.md │ │ │ │ ├── array_stack.md │ │ │ │ ├── linkedlist_queue.md │ │ │ │ └── linkedlist_stack.md │ │ │ └── chapter_tree/ │ │ │ ├── array_binary_tree.md │ │ │ ├── binary_search_tree.md │ │ │ ├── binary_tree_bfs.md │ │ │ └── binary_tree_dfs.md │ │ ├── ruby/ │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.rb │ │ │ │ ├── linked_list.rb │ │ │ │ ├── list.rb │ │ │ │ └── my_list.rb │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.rb │ │ │ │ ├── permutations_i.rb │ │ │ │ ├── permutations_ii.rb │ │ │ │ ├── preorder_traversal_i_compact.rb │ │ │ │ ├── preorder_traversal_ii_compact.rb │ │ │ │ ├── preorder_traversal_iii_compact.rb │ │ │ │ ├── preorder_traversal_iii_template.rb │ │ │ │ ├── subset_sum_i.rb │ │ │ │ ├── subset_sum_i_naive.rb │ │ │ │ └── subset_sum_ii.rb │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.rb │ │ │ │ ├── recursion.rb │ │ │ │ ├── space_complexity.rb │ │ │ │ ├── time_complexity.rb │ │ │ │ └── worst_best_time_complexity.rb │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.rb │ │ │ │ ├── build_tree.rb │ │ │ │ └── hanota.rb │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.rb │ │ │ │ ├── climbing_stairs_constraint_dp.rb │ │ │ │ ├── climbing_stairs_dfs.rb │ │ │ │ ├── climbing_stairs_dfs_mem.rb │ │ │ │ ├── climbing_stairs_dp.rb │ │ │ │ ├── coin_change.rb │ │ │ │ ├── coin_change_ii.rb │ │ │ │ ├── edit_distance.rb │ │ │ │ ├── knapsack.rb │ │ │ │ ├── min_cost_climbing_stairs_dp.rb │ │ │ │ ├── min_path_sum.rb │ │ │ │ └── unbounded_knapsack.rb │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.rb │ │ │ │ ├── graph_adjacency_matrix.rb │ │ │ │ ├── graph_bfs.rb │ │ │ │ └── graph_dfs.rb │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.rb │ │ │ │ ├── fractional_knapsack.rb │ │ │ │ ├── max_capacity.rb │ │ │ │ └── max_product_cutting.rb │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.rb │ │ │ │ ├── built_in_hash.rb │ │ │ │ ├── hash_map.rb │ │ │ │ ├── hash_map_chaining.rb │ │ │ │ ├── hash_map_open_addressing.rb │ │ │ │ └── simple_hash.rb │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.rb │ │ │ │ └── top_k.rb │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.rb │ │ │ │ ├── binary_search_edge.rb │ │ │ │ ├── binary_search_insertion.rb │ │ │ │ ├── hashing_search.rb │ │ │ │ ├── linear_search.rb │ │ │ │ └── two_sum.rb │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.rb │ │ │ │ ├── bucket_sort.rb │ │ │ │ ├── counting_sort.rb │ │ │ │ ├── heap_sort.rb │ │ │ │ ├── insertion_sort.rb │ │ │ │ ├── merge_sort.rb │ │ │ │ ├── quick_sort.rb │ │ │ │ ├── radix_sort.rb │ │ │ │ └── selection_sort.rb │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.rb │ │ │ │ ├── array_queue.rb │ │ │ │ ├── array_stack.rb │ │ │ │ ├── deque.rb │ │ │ │ ├── linkedlist_deque.rb │ │ │ │ ├── linkedlist_queue.rb │ │ │ │ ├── linkedlist_stack.rb │ │ │ │ ├── queue.rb │ │ │ │ └── stack.rb │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.rb │ │ │ │ ├── avl_tree.rb │ │ │ │ ├── binary_search_tree.rb │ │ │ │ ├── binary_tree.rb │ │ │ │ ├── binary_tree_bfs.rb │ │ │ │ └── binary_tree_dfs.rb │ │ │ ├── test_all.rb │ │ │ └── utils/ │ │ │ ├── list_node.rb │ │ │ ├── print_util.rb │ │ │ ├── tree_node.rb │ │ │ └── vertex.rb │ │ ├── rust/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.rs │ │ │ │ ├── linked_list.rs │ │ │ │ ├── list.rs │ │ │ │ └── my_list.rs │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.rs │ │ │ │ ├── permutations_i.rs │ │ │ │ ├── permutations_ii.rs │ │ │ │ ├── preorder_traversal_i_compact.rs │ │ │ │ ├── preorder_traversal_ii_compact.rs │ │ │ │ ├── preorder_traversal_iii_compact.rs │ │ │ │ ├── preorder_traversal_iii_template.rs │ │ │ │ ├── subset_sum_i.rs │ │ │ │ ├── subset_sum_i_naive.rs │ │ │ │ └── subset_sum_ii.rs │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.rs │ │ │ │ ├── recursion.rs │ │ │ │ ├── space_complexity.rs │ │ │ │ ├── time_complexity.rs │ │ │ │ └── worst_best_time_complexity.rs │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.rs │ │ │ │ ├── build_tree.rs │ │ │ │ └── hanota.rs │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.rs │ │ │ │ ├── climbing_stairs_constraint_dp.rs │ │ │ │ ├── climbing_stairs_dfs.rs │ │ │ │ ├── climbing_stairs_dfs_mem.rs │ │ │ │ ├── climbing_stairs_dp.rs │ │ │ │ ├── coin_change.rs │ │ │ │ ├── coin_change_ii.rs │ │ │ │ ├── edit_distance.rs │ │ │ │ ├── knapsack.rs │ │ │ │ ├── min_cost_climbing_stairs_dp.rs │ │ │ │ ├── min_path_sum.rs │ │ │ │ └── unbounded_knapsack.rs │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.rs │ │ │ │ ├── graph_adjacency_matrix.rs │ │ │ │ ├── graph_bfs.rs │ │ │ │ └── graph_dfs.rs │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.rs │ │ │ │ ├── fractional_knapsack.rs │ │ │ │ ├── max_capacity.rs │ │ │ │ └── max_product_cutting.rs │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.rs │ │ │ │ ├── build_in_hash.rs │ │ │ │ ├── hash_map.rs │ │ │ │ ├── hash_map_chaining.rs │ │ │ │ ├── hash_map_open_addressing.rs │ │ │ │ └── simple_hash.rs │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.rs │ │ │ │ ├── my_heap.rs │ │ │ │ └── top_k.rs │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.rs │ │ │ │ ├── binary_search_edge.rs │ │ │ │ ├── binary_search_insertion.rs │ │ │ │ ├── hashing_search.rs │ │ │ │ ├── linear_search.rs │ │ │ │ └── two_sum.rs │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.rs │ │ │ │ ├── bucket_sort.rs │ │ │ │ ├── counting_sort.rs │ │ │ │ ├── heap_sort.rs │ │ │ │ ├── insertion_sort.rs │ │ │ │ ├── merge_sort.rs │ │ │ │ ├── quick_sort.rs │ │ │ │ ├── radix_sort.rs │ │ │ │ └── selection_sort.rs │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.rs │ │ │ │ ├── array_queue.rs │ │ │ │ ├── array_stack.rs │ │ │ │ ├── deque.rs │ │ │ │ ├── linkedlist_deque.rs │ │ │ │ ├── linkedlist_queue.rs │ │ │ │ ├── linkedlist_stack.rs │ │ │ │ ├── queue.rs │ │ │ │ └── stack.rs │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.rs │ │ │ │ ├── avl_tree.rs │ │ │ │ ├── binary_search_tree.rs │ │ │ │ ├── binary_tree.rs │ │ │ │ ├── binary_tree_bfs.rs │ │ │ │ └── binary_tree_dfs.rs │ │ │ └── src/ │ │ │ ├── include/ │ │ │ │ ├── list_node.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── print_util.rs │ │ │ │ ├── tree_node.rs │ │ │ │ └── vertex.rs │ │ │ └── lib.rs │ │ ├── swift/ │ │ │ ├── .gitignore │ │ │ ├── Package.resolved │ │ │ ├── Package.swift │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.swift │ │ │ │ ├── linked_list.swift │ │ │ │ ├── list.swift │ │ │ │ └── my_list.swift │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.swift │ │ │ │ ├── permutations_i.swift │ │ │ │ ├── permutations_ii.swift │ │ │ │ ├── preorder_traversal_i_compact.swift │ │ │ │ ├── preorder_traversal_ii_compact.swift │ │ │ │ ├── preorder_traversal_iii_compact.swift │ │ │ │ ├── preorder_traversal_iii_template.swift │ │ │ │ ├── subset_sum_i.swift │ │ │ │ ├── subset_sum_i_naive.swift │ │ │ │ └── subset_sum_ii.swift │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.swift │ │ │ │ ├── recursion.swift │ │ │ │ ├── space_complexity.swift │ │ │ │ ├── time_complexity.swift │ │ │ │ └── worst_best_time_complexity.swift │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.swift │ │ │ │ ├── build_tree.swift │ │ │ │ └── hanota.swift │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.swift │ │ │ │ ├── climbing_stairs_constraint_dp.swift │ │ │ │ ├── climbing_stairs_dfs.swift │ │ │ │ ├── climbing_stairs_dfs_mem.swift │ │ │ │ ├── climbing_stairs_dp.swift │ │ │ │ ├── coin_change.swift │ │ │ │ ├── coin_change_ii.swift │ │ │ │ ├── edit_distance.swift │ │ │ │ ├── knapsack.swift │ │ │ │ ├── min_cost_climbing_stairs_dp.swift │ │ │ │ ├── min_path_sum.swift │ │ │ │ └── unbounded_knapsack.swift │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.swift │ │ │ │ ├── graph_adjacency_list_target.swift │ │ │ │ ├── graph_adjacency_matrix.swift │ │ │ │ ├── graph_bfs.swift │ │ │ │ └── graph_dfs.swift │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.swift │ │ │ │ ├── fractional_knapsack.swift │ │ │ │ ├── max_capacity.swift │ │ │ │ └── max_product_cutting.swift │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.swift │ │ │ │ ├── built_in_hash.swift │ │ │ │ ├── hash_map.swift │ │ │ │ ├── hash_map_chaining.swift │ │ │ │ ├── hash_map_open_addressing.swift │ │ │ │ └── simple_hash.swift │ │ │ ├── chapter_heap/ │ │ │ │ ├── heap.swift │ │ │ │ ├── my_heap.swift │ │ │ │ └── top_k.swift │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.swift │ │ │ │ ├── binary_search_edge.swift │ │ │ │ ├── binary_search_insertion.swift │ │ │ │ ├── binary_search_insertion_target.swift │ │ │ │ ├── hashing_search.swift │ │ │ │ ├── linear_search.swift │ │ │ │ └── two_sum.swift │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.swift │ │ │ │ ├── bucket_sort.swift │ │ │ │ ├── counting_sort.swift │ │ │ │ ├── heap_sort.swift │ │ │ │ ├── insertion_sort.swift │ │ │ │ ├── merge_sort.swift │ │ │ │ ├── quick_sort.swift │ │ │ │ ├── radix_sort.swift │ │ │ │ └── selection_sort.swift │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.swift │ │ │ │ ├── array_queue.swift │ │ │ │ ├── array_stack.swift │ │ │ │ ├── deque.swift │ │ │ │ ├── linkedlist_deque.swift │ │ │ │ ├── linkedlist_queue.swift │ │ │ │ ├── linkedlist_stack.swift │ │ │ │ ├── queue.swift │ │ │ │ └── stack.swift │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.swift │ │ │ │ ├── avl_tree.swift │ │ │ │ ├── binary_search_tree.swift │ │ │ │ ├── binary_tree.swift │ │ │ │ ├── binary_tree_bfs.swift │ │ │ │ └── binary_tree_dfs.swift │ │ │ └── utils/ │ │ │ ├── ListNode.swift │ │ │ ├── Pair.swift │ │ │ ├── PrintUtil.swift │ │ │ ├── TreeNode.swift │ │ │ └── Vertex.swift │ │ ├── typescript/ │ │ │ ├── .gitignore │ │ │ ├── .prettierrc │ │ │ ├── chapter_array_and_linkedlist/ │ │ │ │ ├── array.ts │ │ │ │ ├── linked_list.ts │ │ │ │ ├── list.ts │ │ │ │ └── my_list.ts │ │ │ ├── chapter_backtracking/ │ │ │ │ ├── n_queens.ts │ │ │ │ ├── permutations_i.ts │ │ │ │ ├── permutations_ii.ts │ │ │ │ ├── preorder_traversal_i_compact.ts │ │ │ │ ├── preorder_traversal_ii_compact.ts │ │ │ │ ├── preorder_traversal_iii_compact.ts │ │ │ │ ├── preorder_traversal_iii_template.ts │ │ │ │ ├── subset_sum_i.ts │ │ │ │ ├── subset_sum_i_naive.ts │ │ │ │ └── subset_sum_ii.ts │ │ │ ├── chapter_computational_complexity/ │ │ │ │ ├── iteration.ts │ │ │ │ ├── recursion.ts │ │ │ │ ├── space_complexity.ts │ │ │ │ ├── time_complexity.ts │ │ │ │ └── worst_best_time_complexity.ts │ │ │ ├── chapter_divide_and_conquer/ │ │ │ │ ├── binary_search_recur.ts │ │ │ │ ├── build_tree.ts │ │ │ │ └── hanota.ts │ │ │ ├── chapter_dynamic_programming/ │ │ │ │ ├── climbing_stairs_backtrack.ts │ │ │ │ ├── climbing_stairs_constraint_dp.ts │ │ │ │ ├── climbing_stairs_dfs.ts │ │ │ │ ├── climbing_stairs_dfs_mem.ts │ │ │ │ ├── climbing_stairs_dp.ts │ │ │ │ ├── coin_change.ts │ │ │ │ ├── coin_change_ii.ts │ │ │ │ ├── edit_distance.ts │ │ │ │ ├── knapsack.ts │ │ │ │ ├── min_cost_climbing_stairs_dp.ts │ │ │ │ ├── min_path_sum.ts │ │ │ │ └── unbounded_knapsack.ts │ │ │ ├── chapter_graph/ │ │ │ │ ├── graph_adjacency_list.ts │ │ │ │ ├── graph_adjacency_matrix.ts │ │ │ │ ├── graph_bfs.ts │ │ │ │ └── graph_dfs.ts │ │ │ ├── chapter_greedy/ │ │ │ │ ├── coin_change_greedy.ts │ │ │ │ ├── fractional_knapsack.ts │ │ │ │ ├── max_capacity.ts │ │ │ │ └── max_product_cutting.ts │ │ │ ├── chapter_hashing/ │ │ │ │ ├── array_hash_map.ts │ │ │ │ ├── hash_map.ts │ │ │ │ ├── hash_map_chaining.ts │ │ │ │ ├── hash_map_open_addressing.ts │ │ │ │ └── simple_hash.ts │ │ │ ├── chapter_heap/ │ │ │ │ ├── my_heap.ts │ │ │ │ └── top_k.ts │ │ │ ├── chapter_searching/ │ │ │ │ ├── binary_search.ts │ │ │ │ ├── binary_search_edge.ts │ │ │ │ ├── binary_search_insertion.ts │ │ │ │ ├── hashing_search.ts │ │ │ │ ├── linear_search.ts │ │ │ │ └── two_sum.ts │ │ │ ├── chapter_sorting/ │ │ │ │ ├── bubble_sort.ts │ │ │ │ ├── bucket_sort.ts │ │ │ │ ├── counting_sort.ts │ │ │ │ ├── heap_sort.ts │ │ │ │ ├── insertion_sort.ts │ │ │ │ ├── merge_sort.ts │ │ │ │ ├── quick_sort.ts │ │ │ │ ├── radix_sort.ts │ │ │ │ └── selection_sort.ts │ │ │ ├── chapter_stack_and_queue/ │ │ │ │ ├── array_deque.ts │ │ │ │ ├── array_queue.ts │ │ │ │ ├── array_stack.ts │ │ │ │ ├── deque.ts │ │ │ │ ├── linkedlist_deque.ts │ │ │ │ ├── linkedlist_queue.ts │ │ │ │ ├── linkedlist_stack.ts │ │ │ │ ├── queue.ts │ │ │ │ └── stack.ts │ │ │ ├── chapter_tree/ │ │ │ │ ├── array_binary_tree.ts │ │ │ │ ├── avl_tree.ts │ │ │ │ ├── binary_search_tree.ts │ │ │ │ ├── binary_tree.ts │ │ │ │ ├── binary_tree_bfs.ts │ │ │ │ └── binary_tree_dfs.ts │ │ │ ├── modules/ │ │ │ │ ├── ListNode.ts │ │ │ │ ├── PrintUtil.ts │ │ │ │ ├── TreeNode.ts │ │ │ │ └── Vertex.ts │ │ │ ├── package.json │ │ │ └── tsconfig.json │ │ └── zig/ │ │ ├── .gitignore │ │ ├── build.zig │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.zig │ │ │ ├── linked_list.zig │ │ │ ├── list.zig │ │ │ └── my_list.zig │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.zig │ │ │ ├── recursion.zig │ │ │ ├── space_complexity.zig │ │ │ ├── time_complexity.zig │ │ │ └── worst_best_time_complexity.zig │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.zig │ │ │ ├── climbing_stairs_constraint_dp.zig │ │ │ ├── climbing_stairs_dfs.zig │ │ │ ├── climbing_stairs_dfs_mem.zig │ │ │ ├── climbing_stairs_dp.zig │ │ │ ├── coin_change.zig │ │ │ ├── coin_change_ii.zig │ │ │ ├── edit_distance.zig │ │ │ ├── knapsack.zig │ │ │ ├── min_cost_climbing_stairs_dp.zig │ │ │ ├── min_path_sum.zig │ │ │ └── unbounded_knapsack.zig │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.zig │ │ │ └── hash_map.zig │ │ ├── chapter_heap/ │ │ │ ├── heap.zig │ │ │ └── my_heap.zig │ │ ├── chapter_searching/ │ │ │ ├── binary_search.zig │ │ │ ├── hashing_search.zig │ │ │ ├── linear_search.zig │ │ │ └── two_sum.zig │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.zig │ │ │ ├── insertion_sort.zig │ │ │ ├── merge_sort.zig │ │ │ ├── quick_sort.zig │ │ │ └── radix_sort.zig │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_queue.zig │ │ │ ├── array_stack.zig │ │ │ ├── deque.zig │ │ │ ├── linkedlist_deque.zig │ │ │ ├── linkedlist_queue.zig │ │ │ ├── linkedlist_stack.zig │ │ │ ├── queue.zig │ │ │ └── stack.zig │ │ ├── chapter_tree/ │ │ │ ├── avl_tree.zig │ │ │ ├── binary_search_tree.zig │ │ │ ├── binary_tree.zig │ │ │ ├── binary_tree_bfs.zig │ │ │ └── binary_tree_dfs.zig │ │ ├── include/ │ │ │ ├── PrintUtil.zig │ │ │ └── include.zig │ │ ├── main.zig │ │ └── utils/ │ │ ├── ListNode.zig │ │ ├── TreeNode.zig │ │ ├── format.zig │ │ └── utils.zig │ ├── docs/ │ │ ├── chapter_appendix/ │ │ │ ├── contribution.md │ │ │ ├── index.md │ │ │ ├── installation.md │ │ │ └── terminology.md │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.md │ │ │ ├── index.md │ │ │ ├── linked_list.md │ │ │ ├── list.md │ │ │ ├── ram_and_cache.md │ │ │ └── summary.md │ │ ├── chapter_backtracking/ │ │ │ ├── backtracking_algorithm.md │ │ │ ├── index.md │ │ │ ├── n_queens_problem.md │ │ │ ├── permutations_problem.md │ │ │ ├── subset_sum_problem.md │ │ │ └── summary.md │ │ ├── chapter_computational_complexity/ │ │ │ ├── index.md │ │ │ ├── iteration_and_recursion.md │ │ │ ├── performance_evaluation.md │ │ │ ├── space_complexity.md │ │ │ ├── summary.md │ │ │ └── time_complexity.md │ │ ├── chapter_data_structure/ │ │ │ ├── basic_data_types.md │ │ │ ├── character_encoding.md │ │ │ ├── classification_of_data_structure.md │ │ │ ├── index.md │ │ │ ├── number_encoding.md │ │ │ └── summary.md │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.md │ │ │ ├── build_binary_tree_problem.md │ │ │ ├── divide_and_conquer.md │ │ │ ├── hanota_problem.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_dynamic_programming/ │ │ │ ├── dp_problem_features.md │ │ │ ├── dp_solution_pipeline.md │ │ │ ├── edit_distance_problem.md │ │ │ ├── index.md │ │ │ ├── intro_to_dynamic_programming.md │ │ │ ├── knapsack_problem.md │ │ │ ├── summary.md │ │ │ └── unbounded_knapsack_problem.md │ │ ├── chapter_graph/ │ │ │ ├── graph.md │ │ │ ├── graph_operations.md │ │ │ ├── graph_traversal.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_greedy/ │ │ │ ├── fractional_knapsack_problem.md │ │ │ ├── greedy_algorithm.md │ │ │ ├── index.md │ │ │ ├── max_capacity_problem.md │ │ │ ├── max_product_cutting_problem.md │ │ │ └── summary.md │ │ ├── chapter_hashing/ │ │ │ ├── hash_algorithm.md │ │ │ ├── hash_collision.md │ │ │ ├── hash_map.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── chapter_heap/ │ │ │ ├── build_heap.md │ │ │ ├── heap.md │ │ │ ├── index.md │ │ │ ├── summary.md │ │ │ └── top_k.md │ │ ├── chapter_hello_algo/ │ │ │ └── index.md │ │ ├── chapter_introduction/ │ │ │ ├── algorithms_are_everywhere.md │ │ │ ├── index.md │ │ │ ├── summary.md │ │ │ └── what_is_dsa.md │ │ ├── chapter_preface/ │ │ │ ├── about_the_book.md │ │ │ ├── index.md │ │ │ ├── suggestions.md │ │ │ └── summary.md │ │ ├── chapter_reference/ │ │ │ └── index.md │ │ ├── chapter_searching/ │ │ │ ├── binary_search.md │ │ │ ├── binary_search_edge.md │ │ │ ├── binary_search_insertion.md │ │ │ ├── index.md │ │ │ ├── replace_linear_by_hashing.md │ │ │ ├── searching_algorithm_revisited.md │ │ │ └── summary.md │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.md │ │ │ ├── bucket_sort.md │ │ │ ├── counting_sort.md │ │ │ ├── heap_sort.md │ │ │ ├── index.md │ │ │ ├── insertion_sort.md │ │ │ ├── merge_sort.md │ │ │ ├── quick_sort.md │ │ │ ├── radix_sort.md │ │ │ ├── selection_sort.md │ │ │ ├── sorting_algorithm.md │ │ │ └── summary.md │ │ ├── chapter_stack_and_queue/ │ │ │ ├── deque.md │ │ │ ├── index.md │ │ │ ├── queue.md │ │ │ ├── stack.md │ │ │ └── summary.md │ │ ├── chapter_tree/ │ │ │ ├── array_representation_of_tree.md │ │ │ ├── avl_tree.md │ │ │ ├── binary_search_tree.md │ │ │ ├── binary_tree.md │ │ │ ├── binary_tree_traversal.md │ │ │ ├── index.md │ │ │ └── summary.md │ │ ├── index.html │ │ └── index.md │ └── mkdocs.yml └── zh-hant/ ├── README.md ├── codes/ │ ├── Dockerfile │ ├── c/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array.c │ │ │ ├── linked_list.c │ │ │ └── my_list.c │ │ ├── chapter_backtracking/ │ │ │ ├── CMakeLists.txt │ │ │ ├── n_queens.c │ │ │ ├── permutations_i.c │ │ │ ├── permutations_ii.c │ │ │ ├── preorder_traversal_i_compact.c │ │ │ ├── preorder_traversal_ii_compact.c │ │ │ ├── preorder_traversal_iii_compact.c │ │ │ ├── preorder_traversal_iii_template.c │ │ │ ├── subset_sum_i.c │ │ │ ├── subset_sum_i_naive.c │ │ │ └── subset_sum_ii.c │ │ ├── chapter_computational_complexity/ │ │ │ ├── CMakeLists.txt │ │ │ ├── iteration.c │ │ │ ├── recursion.c │ │ │ ├── space_complexity.c │ │ │ ├── time_complexity.c │ │ │ └── worst_best_time_complexity.c │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search_recur.c │ │ │ ├── build_tree.c │ │ │ └── hanota.c │ │ ├── chapter_dynamic_programming/ │ │ │ ├── CMakeLists.txt │ │ │ ├── climbing_stairs_backtrack.c │ │ │ ├── climbing_stairs_constraint_dp.c │ │ │ ├── climbing_stairs_dfs.c │ │ │ ├── climbing_stairs_dfs_mem.c │ │ │ ├── climbing_stairs_dp.c │ │ │ ├── coin_change.c │ │ │ ├── coin_change_ii.c │ │ │ ├── edit_distance.c │ │ │ ├── knapsack.c │ │ │ ├── min_cost_climbing_stairs_dp.c │ │ │ ├── min_path_sum.c │ │ │ └── unbounded_knapsack.c │ │ ├── chapter_graph/ │ │ │ ├── CMakeLists.txt │ │ │ ├── graph_adjacency_list.c │ │ │ ├── graph_adjacency_list_test.c │ │ │ ├── graph_adjacency_matrix.c │ │ │ ├── graph_bfs.c │ │ │ └── graph_dfs.c │ │ ├── chapter_greedy/ │ │ │ ├── CMakeLists.txt │ │ │ ├── coin_change_greedy.c │ │ │ ├── fractional_knapsack.c │ │ │ ├── max_capacity.c │ │ │ └── max_product_cutting.c │ │ ├── chapter_hashing/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_hash_map.c │ │ │ ├── hash_map_chaining.c │ │ │ ├── hash_map_open_addressing.c │ │ │ └── simple_hash.c │ │ ├── chapter_heap/ │ │ │ ├── CMakeLists.txt │ │ │ ├── my_heap.c │ │ │ ├── my_heap_test.c │ │ │ └── top_k.c │ │ ├── chapter_searching/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search.c │ │ │ ├── binary_search_edge.c │ │ │ ├── binary_search_insertion.c │ │ │ └── two_sum.c │ │ ├── chapter_sorting/ │ │ │ ├── CMakeLists.txt │ │ │ ├── bubble_sort.c │ │ │ ├── bucket_sort.c │ │ │ ├── counting_sort.c │ │ │ ├── heap_sort.c │ │ │ ├── insertion_sort.c │ │ │ ├── merge_sort.c │ │ │ ├── quick_sort.c │ │ │ ├── radix_sort.c │ │ │ └── selection_sort.c │ │ ├── chapter_stack_and_queue/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_deque.c │ │ │ ├── array_queue.c │ │ │ ├── array_stack.c │ │ │ ├── linkedlist_deque.c │ │ │ ├── linkedlist_queue.c │ │ │ └── linkedlist_stack.c │ │ ├── chapter_tree/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_binary_tree.c │ │ │ ├── avl_tree.c │ │ │ ├── binary_search_tree.c │ │ │ ├── binary_tree.c │ │ │ ├── binary_tree_bfs.c │ │ │ └── binary_tree_dfs.c │ │ └── utils/ │ │ ├── CMakeLists.txt │ │ ├── common.h │ │ ├── common_test.c │ │ ├── list_node.h │ │ ├── print_util.h │ │ ├── tree_node.h │ │ ├── uthash.h │ │ ├── vector.h │ │ └── vertex.h │ ├── cpp/ │ │ ├── .gitignore │ │ ├── CMakeLists.txt │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array.cpp │ │ │ ├── linked_list.cpp │ │ │ ├── list.cpp │ │ │ └── my_list.cpp │ │ ├── chapter_backtracking/ │ │ │ ├── CMakeLists.txt │ │ │ ├── n_queens.cpp │ │ │ ├── permutations_i.cpp │ │ │ ├── permutations_ii.cpp │ │ │ ├── preorder_traversal_i_compact.cpp │ │ │ ├── preorder_traversal_ii_compact.cpp │ │ │ ├── preorder_traversal_iii_compact.cpp │ │ │ ├── preorder_traversal_iii_template.cpp │ │ │ ├── subset_sum_i.cpp │ │ │ ├── subset_sum_i_naive.cpp │ │ │ └── subset_sum_ii.cpp │ │ ├── chapter_computational_complexity/ │ │ │ ├── CMakeLists.txt │ │ │ ├── iteration.cpp │ │ │ ├── recursion.cpp │ │ │ ├── space_complexity.cpp │ │ │ ├── time_complexity.cpp │ │ │ └── worst_best_time_complexity.cpp │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search_recur.cpp │ │ │ ├── build_tree.cpp │ │ │ └── hanota.cpp │ │ ├── chapter_dynamic_programming/ │ │ │ ├── CMakeLists.txt │ │ │ ├── climbing_stairs_backtrack.cpp │ │ │ ├── climbing_stairs_constraint_dp.cpp │ │ │ ├── climbing_stairs_dfs.cpp │ │ │ ├── climbing_stairs_dfs_mem.cpp │ │ │ ├── climbing_stairs_dp.cpp │ │ │ ├── coin_change.cpp │ │ │ ├── coin_change_ii.cpp │ │ │ ├── edit_distance.cpp │ │ │ ├── knapsack.cpp │ │ │ ├── min_cost_climbing_stairs_dp.cpp │ │ │ ├── min_path_sum.cpp │ │ │ └── unbounded_knapsack.cpp │ │ ├── chapter_graph/ │ │ │ ├── CMakeLists.txt │ │ │ ├── graph_adjacency_list.cpp │ │ │ ├── graph_adjacency_list_test.cpp │ │ │ ├── graph_adjacency_matrix.cpp │ │ │ ├── graph_bfs.cpp │ │ │ └── graph_dfs.cpp │ │ ├── chapter_greedy/ │ │ │ ├── CMakeLists.txt │ │ │ ├── coin_change_greedy.cpp │ │ │ ├── fractional_knapsack.cpp │ │ │ ├── max_capacity.cpp │ │ │ └── max_product_cutting.cpp │ │ ├── chapter_hashing/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_hash_map.cpp │ │ │ ├── array_hash_map_test.cpp │ │ │ ├── built_in_hash.cpp │ │ │ ├── hash_map.cpp │ │ │ ├── hash_map_chaining.cpp │ │ │ ├── hash_map_open_addressing.cpp │ │ │ └── simple_hash.cpp │ │ ├── chapter_heap/ │ │ │ ├── CMakeLists.txt │ │ │ ├── heap.cpp │ │ │ ├── my_heap.cpp │ │ │ └── top_k.cpp │ │ ├── chapter_searching/ │ │ │ ├── CMakeLists.txt │ │ │ ├── binary_search.cpp │ │ │ ├── binary_search_edge.cpp │ │ │ ├── binary_search_insertion.cpp │ │ │ ├── hashing_search.cpp │ │ │ ├── linear_search.cpp │ │ │ └── two_sum.cpp │ │ ├── chapter_sorting/ │ │ │ ├── CMakeLists.txt │ │ │ ├── bubble_sort.cpp │ │ │ ├── bucket_sort.cpp │ │ │ ├── counting_sort.cpp │ │ │ ├── heap_sort.cpp │ │ │ ├── insertion_sort.cpp │ │ │ ├── merge_sort.cpp │ │ │ ├── quick_sort.cpp │ │ │ ├── radix_sort.cpp │ │ │ └── selection_sort.cpp │ │ ├── chapter_stack_and_queue/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_deque.cpp │ │ │ ├── array_queue.cpp │ │ │ ├── array_stack.cpp │ │ │ ├── deque.cpp │ │ │ ├── linkedlist_deque.cpp │ │ │ ├── linkedlist_queue.cpp │ │ │ ├── linkedlist_stack.cpp │ │ │ ├── queue.cpp │ │ │ └── stack.cpp │ │ ├── chapter_tree/ │ │ │ ├── CMakeLists.txt │ │ │ ├── array_binary_tree.cpp │ │ │ ├── avl_tree.cpp │ │ │ ├── binary_search_tree.cpp │ │ │ ├── binary_tree.cpp │ │ │ ├── binary_tree_bfs.cpp │ │ │ └── binary_tree_dfs.cpp │ │ └── utils/ │ │ ├── CMakeLists.txt │ │ ├── common.hpp │ │ ├── list_node.hpp │ │ ├── print_utils.hpp │ │ ├── tree_node.hpp │ │ └── vertex.hpp │ ├── csharp/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── GlobalUsing.cs │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.cs │ │ │ ├── linked_list.cs │ │ │ ├── list.cs │ │ │ └── my_list.cs │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.cs │ │ │ ├── permutations_i.cs │ │ │ ├── permutations_ii.cs │ │ │ ├── preorder_traversal_i_compact.cs │ │ │ ├── preorder_traversal_ii_compact.cs │ │ │ ├── preorder_traversal_iii_compact.cs │ │ │ ├── preorder_traversal_iii_template.cs │ │ │ ├── subset_sum_i.cs │ │ │ ├── subset_sum_i_naive.cs │ │ │ └── subset_sum_ii.cs │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.cs │ │ │ ├── recursion.cs │ │ │ ├── space_complexity.cs │ │ │ ├── time_complexity.cs │ │ │ └── worst_best_time_complexity.cs │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.cs │ │ │ ├── build_tree.cs │ │ │ └── hanota.cs │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.cs │ │ │ ├── climbing_stairs_constraint_dp.cs │ │ │ ├── climbing_stairs_dfs.cs │ │ │ ├── climbing_stairs_dfs_mem.cs │ │ │ ├── climbing_stairs_dp.cs │ │ │ ├── coin_change.cs │ │ │ ├── coin_change_ii.cs │ │ │ ├── edit_distance.cs │ │ │ ├── knapsack.cs │ │ │ ├── min_cost_climbing_stairs_dp.cs │ │ │ ├── min_path_sum.cs │ │ │ └── unbounded_knapsack.cs │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.cs │ │ │ ├── graph_adjacency_matrix.cs │ │ │ ├── graph_bfs.cs │ │ │ └── graph_dfs.cs │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.cs │ │ │ ├── fractional_knapsack.cs │ │ │ ├── max_capacity.cs │ │ │ └── max_product_cutting.cs │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.cs │ │ │ ├── built_in_hash.cs │ │ │ ├── hash_map.cs │ │ │ ├── hash_map_chaining.cs │ │ │ ├── hash_map_open_addressing.cs │ │ │ └── simple_hash.cs │ │ ├── chapter_heap/ │ │ │ ├── heap.cs │ │ │ ├── my_heap.cs │ │ │ └── top_k.cs │ │ ├── chapter_searching/ │ │ │ ├── binary_search.cs │ │ │ ├── binary_search_edge.cs │ │ │ ├── binary_search_insertion.cs │ │ │ ├── hashing_search.cs │ │ │ ├── linear_search.cs │ │ │ └── two_sum.cs │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.cs │ │ │ ├── bucket_sort.cs │ │ │ ├── counting_sort.cs │ │ │ ├── heap_sort.cs │ │ │ ├── insertion_sort.cs │ │ │ ├── merge_sort.cs │ │ │ ├── quick_sort.cs │ │ │ ├── radix_sort.cs │ │ │ └── selection_sort.cs │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.cs │ │ │ ├── array_queue.cs │ │ │ ├── array_stack.cs │ │ │ ├── deque.cs │ │ │ ├── linkedlist_deque.cs │ │ │ ├── linkedlist_queue.cs │ │ │ ├── linkedlist_stack.cs │ │ │ ├── queue.cs │ │ │ └── stack.cs │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.cs │ │ │ ├── avl_tree.cs │ │ │ ├── binary_search_tree.cs │ │ │ ├── binary_tree.cs │ │ │ ├── binary_tree_bfs.cs │ │ │ └── binary_tree_dfs.cs │ │ ├── csharp.sln │ │ ├── hello-algo.csproj │ │ └── utils/ │ │ ├── ListNode.cs │ │ ├── PrintUtil.cs │ │ ├── TreeNode.cs │ │ └── Vertex.cs │ ├── dart/ │ │ ├── build.dart │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.dart │ │ │ ├── linked_list.dart │ │ │ ├── list.dart │ │ │ └── my_list.dart │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.dart │ │ │ ├── permutations_i.dart │ │ │ ├── permutations_ii.dart │ │ │ ├── preorder_traversal_i_compact.dart │ │ │ ├── preorder_traversal_ii_compact.dart │ │ │ ├── preorder_traversal_iii_compact.dart │ │ │ ├── preorder_traversal_iii_template.dart │ │ │ ├── subset_sum_i.dart │ │ │ ├── subset_sum_i_naive.dart │ │ │ └── subset_sum_ii.dart │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.dart │ │ │ ├── recursion.dart │ │ │ ├── space_complexity.dart │ │ │ ├── time_complexity.dart │ │ │ └── worst_best_time_complexity.dart │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.dart │ │ │ ├── build_tree.dart │ │ │ └── hanota.dart │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.dart │ │ │ ├── climbing_stairs_constraint_dp.dart │ │ │ ├── climbing_stairs_dfs.dart │ │ │ ├── climbing_stairs_dfs_mem.dart │ │ │ ├── climbing_stairs_dp.dart │ │ │ ├── coin_change.dart │ │ │ ├── coin_change_ii.dart │ │ │ ├── edit_distance.dart │ │ │ ├── knapsack.dart │ │ │ ├── min_cost_climbing_stairs_dp.dart │ │ │ ├── min_path_sum.dart │ │ │ └── unbounded_knapsack.dart │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.dart │ │ │ ├── graph_adjacency_matrix.dart │ │ │ ├── graph_bfs.dart │ │ │ └── graph_dfs.dart │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.dart │ │ │ ├── fractional_knapsack.dart │ │ │ ├── max_capacity.dart │ │ │ └── max_product_cutting.dart │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.dart │ │ │ ├── built_in_hash.dart │ │ │ ├── hash_map.dart │ │ │ ├── hash_map_chaining.dart │ │ │ ├── hash_map_open_addressing.dart │ │ │ └── simple_hash.dart │ │ ├── chapter_heap/ │ │ │ ├── my_heap.dart │ │ │ └── top_k.dart │ │ ├── chapter_searching/ │ │ │ ├── binary_search.dart │ │ │ ├── binary_search_edge.dart │ │ │ ├── binary_search_insertion.dart │ │ │ ├── hashing_search.dart │ │ │ ├── linear_search.dart │ │ │ └── two_sum.dart │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.dart │ │ │ ├── bucket_sort.dart │ │ │ ├── counting_sort.dart │ │ │ ├── heap_sort.dart │ │ │ ├── insertion_sort.dart │ │ │ ├── merge_sort.dart │ │ │ ├── quick_sort.dart │ │ │ ├── radix_sort.dart │ │ │ └── selection_sort.dart │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.dart │ │ │ ├── array_queue.dart │ │ │ ├── array_stack.dart │ │ │ ├── deque.dart │ │ │ ├── linkedlist_deque.dart │ │ │ ├── linkedlist_queue.dart │ │ │ ├── linkedlist_stack.dart │ │ │ ├── queue.dart │ │ │ └── stack.dart │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.dart │ │ │ ├── avl_tree.dart │ │ │ ├── binary_search_tree.dart │ │ │ ├── binary_tree.dart │ │ │ ├── binary_tree_bfs.dart │ │ │ └── binary_tree_dfs.dart │ │ └── utils/ │ │ ├── list_node.dart │ │ ├── print_util.dart │ │ ├── tree_node.dart │ │ └── vertex.dart │ ├── docker-compose.yml │ ├── go/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.go │ │ │ ├── array_test.go │ │ │ ├── linked_list.go │ │ │ ├── linked_list_test.go │ │ │ ├── list_test.go │ │ │ ├── my_list.go │ │ │ └── my_list_test.go │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.go │ │ │ ├── n_queens_test.go │ │ │ ├── permutation_test.go │ │ │ ├── permutations_i.go │ │ │ ├── permutations_ii.go │ │ │ ├── preorder_traversal_i_compact.go │ │ │ ├── preorder_traversal_ii_compact.go │ │ │ ├── preorder_traversal_iii_compact.go │ │ │ ├── preorder_traversal_iii_template.go │ │ │ ├── preorder_traversal_test.go │ │ │ ├── subset_sum_i.go │ │ │ ├── subset_sum_i_naive.go │ │ │ ├── subset_sum_ii.go │ │ │ └── subset_sum_test.go │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.go │ │ │ ├── iteration_test.go │ │ │ ├── recursion.go │ │ │ ├── recursion_test.go │ │ │ ├── space_complexity.go │ │ │ ├── space_complexity_test.go │ │ │ ├── time_complexity.go │ │ │ ├── time_complexity_test.go │ │ │ ├── worst_best_time_complexity.go │ │ │ └── worst_best_time_complexity_test.go │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.go │ │ │ ├── binary_search_recur_test.go │ │ │ ├── build_tree.go │ │ │ ├── build_tree_test.go │ │ │ ├── hanota.go │ │ │ └── hanota_test.go │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.go │ │ │ ├── climbing_stairs_constraint_dp.go │ │ │ ├── climbing_stairs_dfs.go │ │ │ ├── climbing_stairs_dfs_mem.go │ │ │ ├── climbing_stairs_dp.go │ │ │ ├── climbing_stairs_test.go │ │ │ ├── coin_change.go │ │ │ ├── coin_change_ii.go │ │ │ ├── coin_change_test.go │ │ │ ├── edit_distance.go │ │ │ ├── edit_distance_test.go │ │ │ ├── knapsack.go │ │ │ ├── knapsack_test.go │ │ │ ├── min_cost_climbing_stairs_dp.go │ │ │ ├── min_path_sum.go │ │ │ ├── min_path_sum_test.go │ │ │ └── unbounded_knapsack.go │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.go │ │ │ ├── graph_adjacency_list_test.go │ │ │ ├── graph_adjacency_matrix.go │ │ │ ├── graph_adjacency_matrix_test.go │ │ │ ├── graph_bfs.go │ │ │ ├── graph_bfs_test.go │ │ │ ├── graph_dfs.go │ │ │ └── graph_dfs_test.go │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.go │ │ │ ├── coin_change_greedy_test.go │ │ │ ├── fractional_knapsack.go │ │ │ ├── fractional_knapsack_test.go │ │ │ ├── max_capacity.go │ │ │ ├── max_capacity_test.go │ │ │ ├── max_product_cutting.go │ │ │ └── max_product_cutting_test.go │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.go │ │ │ ├── array_hash_map_test.go │ │ │ ├── hash_collision_test.go │ │ │ ├── hash_map_chaining.go │ │ │ ├── hash_map_open_addressing.go │ │ │ ├── hash_map_test.go │ │ │ └── simple_hash.go │ │ ├── chapter_heap/ │ │ │ ├── heap.go │ │ │ ├── heap_test.go │ │ │ ├── my_heap.go │ │ │ └── top_k.go │ │ ├── chapter_searching/ │ │ │ ├── binary_search.go │ │ │ ├── binary_search_edge.go │ │ │ ├── binary_search_insertion.go │ │ │ ├── binary_search_test.go │ │ │ ├── hashing_search.go │ │ │ ├── hashing_search_test.go │ │ │ ├── linear_search.go │ │ │ ├── linear_search_test.go │ │ │ ├── two_sum.go │ │ │ └── two_sum_test.go │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.go │ │ │ ├── bubble_sort_test.go │ │ │ ├── bucket_sort.go │ │ │ ├── bucket_sort_test.go │ │ │ ├── counting_sort.go │ │ │ ├── counting_sort_test.go │ │ │ ├── heap_sort.go │ │ │ ├── heap_sort_test.go │ │ │ ├── insertion_sort.go │ │ │ ├── insertion_sort_test.go │ │ │ ├── merge_sort.go │ │ │ ├── merge_sort_test.go │ │ │ ├── quick_sort.go │ │ │ ├── quick_sort_test.go │ │ │ ├── radix_sort.go │ │ │ ├── radix_sort_test.go │ │ │ ├── selection_sort.go │ │ │ └── selection_sort_test.go │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.go │ │ │ ├── array_queue.go │ │ │ ├── array_stack.go │ │ │ ├── deque_test.go │ │ │ ├── linkedlist_deque.go │ │ │ ├── linkedlist_queue.go │ │ │ ├── linkedlist_stack.go │ │ │ ├── queue_test.go │ │ │ └── stack_test.go │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.go │ │ │ ├── array_binary_tree_test.go │ │ │ ├── avl_tree.go │ │ │ ├── avl_tree_test.go │ │ │ ├── binary_search_tree.go │ │ │ ├── binary_search_tree_test.go │ │ │ ├── binary_tree_bfs.go │ │ │ ├── binary_tree_bfs_test.go │ │ │ ├── binary_tree_dfs.go │ │ │ ├── binary_tree_dfs_test.go │ │ │ └── binary_tree_test.go │ │ ├── go.mod │ │ └── pkg/ │ │ ├── list_node.go │ │ ├── list_node_test.go │ │ ├── print_utils.go │ │ ├── tree_node.go │ │ ├── tree_node_test.go │ │ └── vertex.go │ ├── java/ │ │ ├── .gitignore │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.java │ │ │ ├── linked_list.java │ │ │ ├── list.java │ │ │ └── my_list.java │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.java │ │ │ ├── permutations_i.java │ │ │ ├── permutations_ii.java │ │ │ ├── preorder_traversal_i_compact.java │ │ │ ├── preorder_traversal_ii_compact.java │ │ │ ├── preorder_traversal_iii_compact.java │ │ │ ├── preorder_traversal_iii_template.java │ │ │ ├── subset_sum_i.java │ │ │ ├── subset_sum_i_naive.java │ │ │ └── subset_sum_ii.java │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.java │ │ │ ├── recursion.java │ │ │ ├── space_complexity.java │ │ │ ├── time_complexity.java │ │ │ └── worst_best_time_complexity.java │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.java │ │ │ ├── build_tree.java │ │ │ └── hanota.java │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.java │ │ │ ├── climbing_stairs_constraint_dp.java │ │ │ ├── climbing_stairs_dfs.java │ │ │ ├── climbing_stairs_dfs_mem.java │ │ │ ├── climbing_stairs_dp.java │ │ │ ├── coin_change.java │ │ │ ├── coin_change_ii.java │ │ │ ├── edit_distance.java │ │ │ ├── knapsack.java │ │ │ ├── min_cost_climbing_stairs_dp.java │ │ │ ├── min_path_sum.java │ │ │ └── unbounded_knapsack.java │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.java │ │ │ ├── graph_adjacency_matrix.java │ │ │ ├── graph_bfs.java │ │ │ └── graph_dfs.java │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.java │ │ │ ├── fractional_knapsack.java │ │ │ ├── max_capacity.java │ │ │ └── max_product_cutting.java │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.java │ │ │ ├── built_in_hash.java │ │ │ ├── hash_map.java │ │ │ ├── hash_map_chaining.java │ │ │ ├── hash_map_open_addressing.java │ │ │ └── simple_hash.java │ │ ├── chapter_heap/ │ │ │ ├── heap.java │ │ │ ├── my_heap.java │ │ │ └── top_k.java │ │ ├── chapter_searching/ │ │ │ ├── binary_search.java │ │ │ ├── binary_search_edge.java │ │ │ ├── binary_search_insertion.java │ │ │ ├── hashing_search.java │ │ │ ├── linear_search.java │ │ │ └── two_sum.java │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.java │ │ │ ├── bucket_sort.java │ │ │ ├── counting_sort.java │ │ │ ├── heap_sort.java │ │ │ ├── insertion_sort.java │ │ │ ├── merge_sort.java │ │ │ ├── quick_sort.java │ │ │ ├── radix_sort.java │ │ │ └── selection_sort.java │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.java │ │ │ ├── array_queue.java │ │ │ ├── array_stack.java │ │ │ ├── deque.java │ │ │ ├── linkedlist_deque.java │ │ │ ├── linkedlist_queue.java │ │ │ ├── linkedlist_stack.java │ │ │ ├── queue.java │ │ │ └── stack.java │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.java │ │ │ ├── avl_tree.java │ │ │ ├── binary_search_tree.java │ │ │ ├── binary_tree.java │ │ │ ├── binary_tree_bfs.java │ │ │ └── binary_tree_dfs.java │ │ └── utils/ │ │ ├── ListNode.java │ │ ├── PrintUtil.java │ │ ├── TreeNode.java │ │ └── Vertex.java │ ├── javascript/ │ │ ├── .prettierrc │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.js │ │ │ ├── linked_list.js │ │ │ ├── list.js │ │ │ └── my_list.js │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.js │ │ │ ├── permutations_i.js │ │ │ ├── permutations_ii.js │ │ │ ├── preorder_traversal_i_compact.js │ │ │ ├── preorder_traversal_ii_compact.js │ │ │ ├── preorder_traversal_iii_compact.js │ │ │ ├── preorder_traversal_iii_template.js │ │ │ ├── subset_sum_i.js │ │ │ ├── subset_sum_i_naive.js │ │ │ └── subset_sum_ii.js │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.js │ │ │ ├── recursion.js │ │ │ ├── space_complexity.js │ │ │ ├── time_complexity.js │ │ │ └── worst_best_time_complexity.js │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.js │ │ │ ├── build_tree.js │ │ │ └── hanota.js │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.js │ │ │ ├── climbing_stairs_constraint_dp.js │ │ │ ├── climbing_stairs_dfs.js │ │ │ ├── climbing_stairs_dfs_mem.js │ │ │ ├── climbing_stairs_dp.js │ │ │ ├── coin_change.js │ │ │ ├── coin_change_ii.js │ │ │ ├── edit_distance.js │ │ │ ├── knapsack.js │ │ │ ├── min_cost_climbing_stairs_dp.js │ │ │ ├── min_path_sum.js │ │ │ └── unbounded_knapsack.js │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.js │ │ │ ├── graph_adjacency_matrix.js │ │ │ ├── graph_bfs.js │ │ │ └── graph_dfs.js │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.js │ │ │ ├── fractional_knapsack.js │ │ │ ├── max_capacity.js │ │ │ └── max_product_cutting.js │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.js │ │ │ ├── hash_map.js │ │ │ ├── hash_map_chaining.js │ │ │ ├── hash_map_open_addressing.js │ │ │ └── simple_hash.js │ │ ├── chapter_heap/ │ │ │ ├── my_heap.js │ │ │ └── top_k.js │ │ ├── chapter_searching/ │ │ │ ├── binary_search.js │ │ │ ├── binary_search_edge.js │ │ │ ├── binary_search_insertion.js │ │ │ ├── hashing_search.js │ │ │ ├── linear_search.js │ │ │ └── two_sum.js │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.js │ │ │ ├── bucket_sort.js │ │ │ ├── counting_sort.js │ │ │ ├── heap_sort.js │ │ │ ├── insertion_sort.js │ │ │ ├── merge_sort.js │ │ │ ├── quick_sort.js │ │ │ ├── radix_sort.js │ │ │ └── selection_sort.js │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.js │ │ │ ├── array_queue.js │ │ │ ├── array_stack.js │ │ │ ├── deque.js │ │ │ ├── linkedlist_deque.js │ │ │ ├── linkedlist_queue.js │ │ │ ├── linkedlist_stack.js │ │ │ ├── queue.js │ │ │ └── stack.js │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.js │ │ │ ├── avl_tree.js │ │ │ ├── binary_search_tree.js │ │ │ ├── binary_tree.js │ │ │ ├── binary_tree_bfs.js │ │ │ └── binary_tree_dfs.js │ │ ├── modules/ │ │ │ ├── ListNode.js │ │ │ ├── PrintUtil.js │ │ │ ├── TreeNode.js │ │ │ └── Vertex.js │ │ └── test_all.js │ ├── kotlin/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.kt │ │ │ ├── linked_list.kt │ │ │ ├── list.kt │ │ │ └── my_list.kt │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.kt │ │ │ ├── permutations_i.kt │ │ │ ├── permutations_ii.kt │ │ │ ├── preorder_traversal_i_compact.kt │ │ │ ├── preorder_traversal_ii_compact.kt │ │ │ ├── preorder_traversal_iii_compact.kt │ │ │ ├── preorder_traversal_iii_template.kt │ │ │ ├── subset_sum_i.kt │ │ │ ├── subset_sum_i_naive.kt │ │ │ └── subset_sum_ii.kt │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.kt │ │ │ ├── recursion.kt │ │ │ ├── space_complexity.kt │ │ │ ├── time_complexity.kt │ │ │ └── worst_best_time_complexity.kt │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.kt │ │ │ ├── build_tree.kt │ │ │ └── hanota.kt │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.kt │ │ │ ├── climbing_stairs_constraint_dp.kt │ │ │ ├── climbing_stairs_dfs.kt │ │ │ ├── climbing_stairs_dfs_mem.kt │ │ │ ├── climbing_stairs_dp.kt │ │ │ ├── coin_change.kt │ │ │ ├── coin_change_ii.kt │ │ │ ├── edit_distance.kt │ │ │ ├── knapsack.kt │ │ │ ├── min_cost_climbing_stairs_dp.kt │ │ │ ├── min_path_sum.kt │ │ │ └── unbounded_knapsack.kt │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.kt │ │ │ ├── graph_adjacency_matrix.kt │ │ │ ├── graph_bfs.kt │ │ │ └── graph_dfs.kt │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.kt │ │ │ ├── fractional_knapsack.kt │ │ │ ├── max_capacity.kt │ │ │ └── max_product_cutting.kt │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.kt │ │ │ ├── built_in_hash.kt │ │ │ ├── hash_map.kt │ │ │ ├── hash_map_chaining.kt │ │ │ ├── hash_map_open_addressing.kt │ │ │ └── simple_hash.kt │ │ ├── chapter_heap/ │ │ │ ├── heap.kt │ │ │ ├── my_heap.kt │ │ │ └── top_k.kt │ │ ├── chapter_searching/ │ │ │ ├── binary_search.kt │ │ │ ├── binary_search_edge.kt │ │ │ ├── binary_search_insertion.kt │ │ │ ├── hashing_search.kt │ │ │ ├── linear_search.kt │ │ │ └── two_sum.kt │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.kt │ │ │ ├── bucket_sort.kt │ │ │ ├── counting_sort.kt │ │ │ ├── heap_sort.kt │ │ │ ├── insertion_sort.kt │ │ │ ├── merge_sort.kt │ │ │ ├── quick_sort.kt │ │ │ ├── radix_sort.kt │ │ │ └── selection_sort.kt │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.kt │ │ │ ├── array_queue.kt │ │ │ ├── array_stack.kt │ │ │ ├── deque.kt │ │ │ ├── linkedlist_deque.kt │ │ │ ├── linkedlist_queue.kt │ │ │ ├── linkedlist_stack.kt │ │ │ ├── queue.kt │ │ │ └── stack.kt │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.kt │ │ │ ├── avl_tree.kt │ │ │ ├── binary_search_tree.kt │ │ │ ├── binary_tree.kt │ │ │ ├── binary_tree_bfs.kt │ │ │ └── binary_tree_dfs.kt │ │ └── utils/ │ │ ├── ListNode.kt │ │ ├── PrintUtil.kt │ │ ├── TreeNode.kt │ │ └── Vertex.kt │ ├── python/ │ │ ├── .gitignore │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.py │ │ │ ├── linked_list.py │ │ │ ├── list.py │ │ │ └── my_list.py │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.py │ │ │ ├── permutations_i.py │ │ │ ├── permutations_ii.py │ │ │ ├── preorder_traversal_i_compact.py │ │ │ ├── preorder_traversal_ii_compact.py │ │ │ ├── preorder_traversal_iii_compact.py │ │ │ ├── preorder_traversal_iii_template.py │ │ │ ├── subset_sum_i.py │ │ │ ├── subset_sum_i_naive.py │ │ │ └── subset_sum_ii.py │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.py │ │ │ ├── recursion.py │ │ │ ├── space_complexity.py │ │ │ ├── time_complexity.py │ │ │ └── worst_best_time_complexity.py │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.py │ │ │ ├── build_tree.py │ │ │ └── hanota.py │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.py │ │ │ ├── climbing_stairs_constraint_dp.py │ │ │ ├── climbing_stairs_dfs.py │ │ │ ├── climbing_stairs_dfs_mem.py │ │ │ ├── climbing_stairs_dp.py │ │ │ ├── coin_change.py │ │ │ ├── coin_change_ii.py │ │ │ ├── edit_distance.py │ │ │ ├── knapsack.py │ │ │ ├── min_cost_climbing_stairs_dp.py │ │ │ ├── min_path_sum.py │ │ │ └── unbounded_knapsack.py │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.py │ │ │ ├── graph_adjacency_matrix.py │ │ │ ├── graph_bfs.py │ │ │ └── graph_dfs.py │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.py │ │ │ ├── fractional_knapsack.py │ │ │ ├── max_capacity.py │ │ │ └── max_product_cutting.py │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.py │ │ │ ├── built_in_hash.py │ │ │ ├── hash_map.py │ │ │ ├── hash_map_chaining.py │ │ │ ├── hash_map_open_addressing.py │ │ │ └── simple_hash.py │ │ ├── chapter_heap/ │ │ │ ├── heap.py │ │ │ ├── my_heap.py │ │ │ └── top_k.py │ │ ├── chapter_searching/ │ │ │ ├── binary_search.py │ │ │ ├── binary_search_edge.py │ │ │ ├── binary_search_insertion.py │ │ │ ├── hashing_search.py │ │ │ ├── linear_search.py │ │ │ └── two_sum.py │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.py │ │ │ ├── bucket_sort.py │ │ │ ├── counting_sort.py │ │ │ ├── heap_sort.py │ │ │ ├── insertion_sort.py │ │ │ ├── merge_sort.py │ │ │ ├── quick_sort.py │ │ │ ├── radix_sort.py │ │ │ └── selection_sort.py │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.py │ │ │ ├── array_queue.py │ │ │ ├── array_stack.py │ │ │ ├── deque.py │ │ │ ├── linkedlist_deque.py │ │ │ ├── linkedlist_queue.py │ │ │ ├── linkedlist_stack.py │ │ │ ├── queue.py │ │ │ └── stack.py │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.py │ │ │ ├── avl_tree.py │ │ │ ├── binary_search_tree.py │ │ │ ├── binary_tree.py │ │ │ ├── binary_tree_bfs.py │ │ │ └── binary_tree_dfs.py │ │ ├── modules/ │ │ │ ├── __init__.py │ │ │ ├── list_node.py │ │ │ ├── print_util.py │ │ │ ├── tree_node.py │ │ │ └── vertex.py │ │ └── test_all.py │ ├── pythontutor/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.md │ │ │ ├── linked_list.md │ │ │ └── my_list.md │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.md │ │ │ ├── permutations_i.md │ │ │ ├── permutations_ii.md │ │ │ ├── preorder_traversal_i_compact.md │ │ │ ├── preorder_traversal_ii_compact.md │ │ │ ├── preorder_traversal_iii_compact.md │ │ │ ├── preorder_traversal_iii_template.md │ │ │ ├── subset_sum_i.md │ │ │ ├── subset_sum_i_naive.md │ │ │ └── subset_sum_ii.md │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.md │ │ │ ├── recursion.md │ │ │ ├── space_complexity.md │ │ │ ├── time_complexity.md │ │ │ └── worst_best_time_complexity.md │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.md │ │ │ ├── build_tree.md │ │ │ └── hanota.md │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.md │ │ │ ├── climbing_stairs_constraint_dp.md │ │ │ ├── climbing_stairs_dfs.md │ │ │ ├── climbing_stairs_dfs_mem.md │ │ │ ├── climbing_stairs_dp.md │ │ │ ├── coin_change.md │ │ │ ├── coin_change_ii.md │ │ │ ├── edit_distance.md │ │ │ ├── knapsack.md │ │ │ ├── min_cost_climbing_stairs_dp.md │ │ │ ├── min_path_sum.md │ │ │ └── unbounded_knapsack.md │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.md │ │ │ ├── graph_adjacency_matrix.md │ │ │ ├── graph_bfs.md │ │ │ └── graph_dfs.md │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.md │ │ │ ├── fractional_knapsack.md │ │ │ ├── max_capacity.md │ │ │ └── max_product_cutting.md │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.md │ │ │ ├── hash_map_chaining.md │ │ │ └── simple_hash.md │ │ ├── chapter_heap/ │ │ │ ├── my_heap.md │ │ │ └── top_k.md │ │ ├── chapter_searching/ │ │ │ ├── binary_search.md │ │ │ ├── binary_search_edge.md │ │ │ ├── binary_search_insertion.md │ │ │ └── two_sum.md │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.md │ │ │ ├── bucket_sort.md │ │ │ ├── counting_sort.md │ │ │ ├── heap_sort.md │ │ │ ├── insertion_sort.md │ │ │ ├── merge_sort.md │ │ │ ├── quick_sort.md │ │ │ ├── radix_sort.md │ │ │ └── selection_sort.md │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_queue.md │ │ │ ├── array_stack.md │ │ │ ├── linkedlist_queue.md │ │ │ └── linkedlist_stack.md │ │ └── chapter_tree/ │ │ ├── array_binary_tree.md │ │ ├── binary_search_tree.md │ │ ├── binary_tree_bfs.md │ │ └── binary_tree_dfs.md │ ├── ruby/ │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.rb │ │ │ ├── linked_list.rb │ │ │ ├── list.rb │ │ │ └── my_list.rb │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.rb │ │ │ ├── permutations_i.rb │ │ │ ├── permutations_ii.rb │ │ │ ├── preorder_traversal_i_compact.rb │ │ │ ├── preorder_traversal_ii_compact.rb │ │ │ ├── preorder_traversal_iii_compact.rb │ │ │ ├── preorder_traversal_iii_template.rb │ │ │ ├── subset_sum_i.rb │ │ │ ├── subset_sum_i_naive.rb │ │ │ └── subset_sum_ii.rb │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.rb │ │ │ ├── recursion.rb │ │ │ ├── space_complexity.rb │ │ │ ├── time_complexity.rb │ │ │ └── worst_best_time_complexity.rb │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.rb │ │ │ ├── build_tree.rb │ │ │ └── hanota.rb │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.rb │ │ │ ├── climbing_stairs_constraint_dp.rb │ │ │ ├── climbing_stairs_dfs.rb │ │ │ ├── climbing_stairs_dfs_mem.rb │ │ │ ├── climbing_stairs_dp.rb │ │ │ ├── coin_change.rb │ │ │ ├── coin_change_ii.rb │ │ │ ├── edit_distance.rb │ │ │ ├── knapsack.rb │ │ │ ├── min_cost_climbing_stairs_dp.rb │ │ │ ├── min_path_sum.rb │ │ │ └── unbounded_knapsack.rb │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.rb │ │ │ ├── graph_adjacency_matrix.rb │ │ │ ├── graph_bfs.rb │ │ │ └── graph_dfs.rb │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.rb │ │ │ ├── fractional_knapsack.rb │ │ │ ├── max_capacity.rb │ │ │ └── max_product_cutting.rb │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.rb │ │ │ ├── built_in_hash.rb │ │ │ ├── hash_map.rb │ │ │ ├── hash_map_chaining.rb │ │ │ ├── hash_map_open_addressing.rb │ │ │ └── simple_hash.rb │ │ ├── chapter_heap/ │ │ │ ├── my_heap.rb │ │ │ └── top_k.rb │ │ ├── chapter_searching/ │ │ │ ├── binary_search.rb │ │ │ ├── binary_search_edge.rb │ │ │ ├── binary_search_insertion.rb │ │ │ ├── hashing_search.rb │ │ │ ├── linear_search.rb │ │ │ └── two_sum.rb │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.rb │ │ │ ├── bucket_sort.rb │ │ │ ├── counting_sort.rb │ │ │ ├── heap_sort.rb │ │ │ ├── insertion_sort.rb │ │ │ ├── merge_sort.rb │ │ │ ├── quick_sort.rb │ │ │ ├── radix_sort.rb │ │ │ └── selection_sort.rb │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.rb │ │ │ ├── array_queue.rb │ │ │ ├── array_stack.rb │ │ │ ├── deque.rb │ │ │ ├── linkedlist_deque.rb │ │ │ ├── linkedlist_queue.rb │ │ │ ├── linkedlist_stack.rb │ │ │ ├── queue.rb │ │ │ └── stack.rb │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.rb │ │ │ ├── avl_tree.rb │ │ │ ├── binary_search_tree.rb │ │ │ ├── binary_tree.rb │ │ │ ├── binary_tree_bfs.rb │ │ │ └── binary_tree_dfs.rb │ │ ├── test_all.rb │ │ └── utils/ │ │ ├── list_node.rb │ │ ├── print_util.rb │ │ ├── tree_node.rb │ │ └── vertex.rb │ ├── rust/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.rs │ │ │ ├── linked_list.rs │ │ │ ├── list.rs │ │ │ └── my_list.rs │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.rs │ │ │ ├── permutations_i.rs │ │ │ ├── permutations_ii.rs │ │ │ ├── preorder_traversal_i_compact.rs │ │ │ ├── preorder_traversal_ii_compact.rs │ │ │ ├── preorder_traversal_iii_compact.rs │ │ │ ├── preorder_traversal_iii_template.rs │ │ │ ├── subset_sum_i.rs │ │ │ ├── subset_sum_i_naive.rs │ │ │ └── subset_sum_ii.rs │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.rs │ │ │ ├── recursion.rs │ │ │ ├── space_complexity.rs │ │ │ ├── time_complexity.rs │ │ │ └── worst_best_time_complexity.rs │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.rs │ │ │ ├── build_tree.rs │ │ │ └── hanota.rs │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.rs │ │ │ ├── climbing_stairs_constraint_dp.rs │ │ │ ├── climbing_stairs_dfs.rs │ │ │ ├── climbing_stairs_dfs_mem.rs │ │ │ ├── climbing_stairs_dp.rs │ │ │ ├── coin_change.rs │ │ │ ├── coin_change_ii.rs │ │ │ ├── edit_distance.rs │ │ │ ├── knapsack.rs │ │ │ ├── min_cost_climbing_stairs_dp.rs │ │ │ ├── min_path_sum.rs │ │ │ └── unbounded_knapsack.rs │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.rs │ │ │ ├── graph_adjacency_matrix.rs │ │ │ ├── graph_bfs.rs │ │ │ └── graph_dfs.rs │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.rs │ │ │ ├── fractional_knapsack.rs │ │ │ ├── max_capacity.rs │ │ │ └── max_product_cutting.rs │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.rs │ │ │ ├── build_in_hash.rs │ │ │ ├── hash_map.rs │ │ │ ├── hash_map_chaining.rs │ │ │ ├── hash_map_open_addressing.rs │ │ │ └── simple_hash.rs │ │ ├── chapter_heap/ │ │ │ ├── heap.rs │ │ │ ├── my_heap.rs │ │ │ └── top_k.rs │ │ ├── chapter_searching/ │ │ │ ├── binary_search.rs │ │ │ ├── binary_search_edge.rs │ │ │ ├── binary_search_insertion.rs │ │ │ ├── hashing_search.rs │ │ │ ├── linear_search.rs │ │ │ └── two_sum.rs │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.rs │ │ │ ├── bucket_sort.rs │ │ │ ├── counting_sort.rs │ │ │ ├── heap_sort.rs │ │ │ ├── insertion_sort.rs │ │ │ ├── merge_sort.rs │ │ │ ├── quick_sort.rs │ │ │ ├── radix_sort.rs │ │ │ └── selection_sort.rs │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.rs │ │ │ ├── array_queue.rs │ │ │ ├── array_stack.rs │ │ │ ├── deque.rs │ │ │ ├── linkedlist_deque.rs │ │ │ ├── linkedlist_queue.rs │ │ │ ├── linkedlist_stack.rs │ │ │ ├── queue.rs │ │ │ └── stack.rs │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.rs │ │ │ ├── avl_tree.rs │ │ │ ├── binary_search_tree.rs │ │ │ ├── binary_tree.rs │ │ │ ├── binary_tree_bfs.rs │ │ │ └── binary_tree_dfs.rs │ │ ├── include/ │ │ │ ├── include.rs │ │ │ ├── list_node.rs │ │ │ ├── print_util.rs │ │ │ ├── tree_node.rs │ │ │ └── vertex.rs │ │ └── src/ │ │ ├── include/ │ │ │ ├── list_node.rs │ │ │ ├── mod.rs │ │ │ ├── print_util.rs │ │ │ ├── tree_node.rs │ │ │ └── vertex.rs │ │ └── lib.rs │ ├── swift/ │ │ ├── .gitignore │ │ ├── Package.resolved │ │ ├── Package.swift │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.swift │ │ │ ├── linked_list.swift │ │ │ ├── list.swift │ │ │ └── my_list.swift │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.swift │ │ │ ├── permutations_i.swift │ │ │ ├── permutations_ii.swift │ │ │ ├── preorder_traversal_i_compact.swift │ │ │ ├── preorder_traversal_ii_compact.swift │ │ │ ├── preorder_traversal_iii_compact.swift │ │ │ ├── preorder_traversal_iii_template.swift │ │ │ ├── subset_sum_i.swift │ │ │ ├── subset_sum_i_naive.swift │ │ │ └── subset_sum_ii.swift │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.swift │ │ │ ├── recursion.swift │ │ │ ├── space_complexity.swift │ │ │ ├── time_complexity.swift │ │ │ └── worst_best_time_complexity.swift │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.swift │ │ │ ├── build_tree.swift │ │ │ └── hanota.swift │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.swift │ │ │ ├── climbing_stairs_constraint_dp.swift │ │ │ ├── climbing_stairs_dfs.swift │ │ │ ├── climbing_stairs_dfs_mem.swift │ │ │ ├── climbing_stairs_dp.swift │ │ │ ├── coin_change.swift │ │ │ ├── coin_change_ii.swift │ │ │ ├── edit_distance.swift │ │ │ ├── knapsack.swift │ │ │ ├── min_cost_climbing_stairs_dp.swift │ │ │ ├── min_path_sum.swift │ │ │ └── unbounded_knapsack.swift │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.swift │ │ │ ├── graph_adjacency_list_target.swift │ │ │ ├── graph_adjacency_matrix.swift │ │ │ ├── graph_bfs.swift │ │ │ └── graph_dfs.swift │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.swift │ │ │ ├── fractional_knapsack.swift │ │ │ ├── max_capacity.swift │ │ │ └── max_product_cutting.swift │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.swift │ │ │ ├── built_in_hash.swift │ │ │ ├── hash_map.swift │ │ │ ├── hash_map_chaining.swift │ │ │ ├── hash_map_open_addressing.swift │ │ │ └── simple_hash.swift │ │ ├── chapter_heap/ │ │ │ ├── heap.swift │ │ │ ├── my_heap.swift │ │ │ └── top_k.swift │ │ ├── chapter_searching/ │ │ │ ├── binary_search.swift │ │ │ ├── binary_search_edge.swift │ │ │ ├── binary_search_insertion.swift │ │ │ ├── binary_search_insertion_target.swift │ │ │ ├── hashing_search.swift │ │ │ ├── linear_search.swift │ │ │ └── two_sum.swift │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.swift │ │ │ ├── bucket_sort.swift │ │ │ ├── counting_sort.swift │ │ │ ├── heap_sort.swift │ │ │ ├── insertion_sort.swift │ │ │ ├── merge_sort.swift │ │ │ ├── quick_sort.swift │ │ │ ├── radix_sort.swift │ │ │ └── selection_sort.swift │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.swift │ │ │ ├── array_queue.swift │ │ │ ├── array_stack.swift │ │ │ ├── deque.swift │ │ │ ├── linkedlist_deque.swift │ │ │ ├── linkedlist_queue.swift │ │ │ ├── linkedlist_stack.swift │ │ │ ├── queue.swift │ │ │ └── stack.swift │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.swift │ │ │ ├── avl_tree.swift │ │ │ ├── binary_search_tree.swift │ │ │ ├── binary_tree.swift │ │ │ ├── binary_tree_bfs.swift │ │ │ └── binary_tree_dfs.swift │ │ └── utils/ │ │ ├── ListNode.swift │ │ ├── Pair.swift │ │ ├── PrintUtil.swift │ │ ├── TreeNode.swift │ │ └── Vertex.swift │ ├── typescript/ │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── chapter_array_and_linkedlist/ │ │ │ ├── array.ts │ │ │ ├── linked_list.ts │ │ │ ├── list.ts │ │ │ └── my_list.ts │ │ ├── chapter_backtracking/ │ │ │ ├── n_queens.ts │ │ │ ├── permutations_i.ts │ │ │ ├── permutations_ii.ts │ │ │ ├── preorder_traversal_i_compact.ts │ │ │ ├── preorder_traversal_ii_compact.ts │ │ │ ├── preorder_traversal_iii_compact.ts │ │ │ ├── preorder_traversal_iii_template.ts │ │ │ ├── subset_sum_i.ts │ │ │ ├── subset_sum_i_naive.ts │ │ │ └── subset_sum_ii.ts │ │ ├── chapter_computational_complexity/ │ │ │ ├── iteration.ts │ │ │ ├── recursion.ts │ │ │ ├── space_complexity.ts │ │ │ ├── time_complexity.ts │ │ │ └── worst_best_time_complexity.ts │ │ ├── chapter_divide_and_conquer/ │ │ │ ├── binary_search_recur.ts │ │ │ ├── build_tree.ts │ │ │ └── hanota.ts │ │ ├── chapter_dynamic_programming/ │ │ │ ├── climbing_stairs_backtrack.ts │ │ │ ├── climbing_stairs_constraint_dp.ts │ │ │ ├── climbing_stairs_dfs.ts │ │ │ ├── climbing_stairs_dfs_mem.ts │ │ │ ├── climbing_stairs_dp.ts │ │ │ ├── coin_change.ts │ │ │ ├── coin_change_ii.ts │ │ │ ├── edit_distance.ts │ │ │ ├── knapsack.ts │ │ │ ├── min_cost_climbing_stairs_dp.ts │ │ │ ├── min_path_sum.ts │ │ │ └── unbounded_knapsack.ts │ │ ├── chapter_graph/ │ │ │ ├── graph_adjacency_list.ts │ │ │ ├── graph_adjacency_matrix.ts │ │ │ ├── graph_bfs.ts │ │ │ └── graph_dfs.ts │ │ ├── chapter_greedy/ │ │ │ ├── coin_change_greedy.ts │ │ │ ├── fractional_knapsack.ts │ │ │ ├── max_capacity.ts │ │ │ └── max_product_cutting.ts │ │ ├── chapter_hashing/ │ │ │ ├── array_hash_map.ts │ │ │ ├── hash_map.ts │ │ │ ├── hash_map_chaining.ts │ │ │ ├── hash_map_open_addressing.ts │ │ │ └── simple_hash.ts │ │ ├── chapter_heap/ │ │ │ ├── my_heap.ts │ │ │ └── top_k.ts │ │ ├── chapter_searching/ │ │ │ ├── binary_search.ts │ │ │ ├── binary_search_edge.ts │ │ │ ├── binary_search_insertion.ts │ │ │ ├── hashing_search.ts │ │ │ ├── linear_search.ts │ │ │ └── two_sum.ts │ │ ├── chapter_sorting/ │ │ │ ├── bubble_sort.ts │ │ │ ├── bucket_sort.ts │ │ │ ├── counting_sort.ts │ │ │ ├── heap_sort.ts │ │ │ ├── insertion_sort.ts │ │ │ ├── merge_sort.ts │ │ │ ├── quick_sort.ts │ │ │ ├── radix_sort.ts │ │ │ └── selection_sort.ts │ │ ├── chapter_stack_and_queue/ │ │ │ ├── array_deque.ts │ │ │ ├── array_queue.ts │ │ │ ├── array_stack.ts │ │ │ ├── deque.ts │ │ │ ├── linkedlist_deque.ts │ │ │ ├── linkedlist_queue.ts │ │ │ ├── linkedlist_stack.ts │ │ │ ├── queue.ts │ │ │ └── stack.ts │ │ ├── chapter_tree/ │ │ │ ├── array_binary_tree.ts │ │ │ ├── avl_tree.ts │ │ │ ├── binary_search_tree.ts │ │ │ ├── binary_tree.ts │ │ │ ├── binary_tree_bfs.ts │ │ │ └── binary_tree_dfs.ts │ │ ├── modules/ │ │ │ ├── ListNode.ts │ │ │ ├── PrintUtil.ts │ │ │ ├── TreeNode.ts │ │ │ └── Vertex.ts │ │ └── tsconfig.json │ └── zig/ │ ├── .gitignore │ ├── build.zig │ ├── chapter_array_and_linkedlist/ │ │ ├── array.zig │ │ ├── linked_list.zig │ │ ├── list.zig │ │ └── my_list.zig │ ├── chapter_computational_complexity/ │ │ ├── iteration.zig │ │ ├── recursion.zig │ │ ├── space_complexity.zig │ │ ├── time_complexity.zig │ │ └── worst_best_time_complexity.zig │ ├── chapter_dynamic_programming/ │ │ ├── climbing_stairs_backtrack.zig │ │ ├── climbing_stairs_constraint_dp.zig │ │ ├── climbing_stairs_dfs.zig │ │ ├── climbing_stairs_dfs_mem.zig │ │ ├── climbing_stairs_dp.zig │ │ ├── coin_change.zig │ │ ├── coin_change_ii.zig │ │ ├── edit_distance.zig │ │ ├── knapsack.zig │ │ ├── min_cost_climbing_stairs_dp.zig │ │ ├── min_path_sum.zig │ │ └── unbounded_knapsack.zig │ ├── chapter_hashing/ │ │ ├── array_hash_map.zig │ │ └── hash_map.zig │ ├── chapter_heap/ │ │ ├── heap.zig │ │ └── my_heap.zig │ ├── chapter_searching/ │ │ ├── binary_search.zig │ │ ├── hashing_search.zig │ │ ├── linear_search.zig │ │ └── two_sum.zig │ ├── chapter_sorting/ │ │ ├── bubble_sort.zig │ │ ├── insertion_sort.zig │ │ ├── merge_sort.zig │ │ ├── quick_sort.zig │ │ └── radix_sort.zig │ ├── chapter_stack_and_queue/ │ │ ├── array_queue.zig │ │ ├── array_stack.zig │ │ ├── deque.zig │ │ ├── linkedlist_deque.zig │ │ ├── linkedlist_queue.zig │ │ ├── linkedlist_stack.zig │ │ ├── queue.zig │ │ └── stack.zig │ ├── chapter_tree/ │ │ ├── avl_tree.zig │ │ ├── binary_search_tree.zig │ │ ├── binary_tree.zig │ │ ├── binary_tree_bfs.zig │ │ └── binary_tree_dfs.zig │ ├── include/ │ │ ├── ListNode.zig │ │ ├── PrintUtil.zig │ │ ├── TreeNode.zig │ │ └── include.zig │ ├── main.zig │ └── utils/ │ ├── ListNode.zig │ ├── TreeNode.zig │ ├── format.zig │ └── utils.zig ├── docs/ │ ├── chapter_appendix/ │ │ ├── contribution.md │ │ ├── index.md │ │ ├── installation.md │ │ └── terminology.md │ ├── chapter_array_and_linkedlist/ │ │ ├── array.md │ │ ├── index.md │ │ ├── linked_list.md │ │ ├── list.md │ │ ├── ram_and_cache.md │ │ └── summary.md │ ├── chapter_backtracking/ │ │ ├── backtracking_algorithm.md │ │ ├── index.md │ │ ├── n_queens_problem.md │ │ ├── permutations_problem.md │ │ ├── subset_sum_problem.md │ │ └── summary.md │ ├── chapter_computational_complexity/ │ │ ├── index.md │ │ ├── iteration_and_recursion.md │ │ ├── performance_evaluation.md │ │ ├── space_complexity.md │ │ ├── summary.md │ │ └── time_complexity.md │ ├── chapter_data_structure/ │ │ ├── basic_data_types.md │ │ ├── character_encoding.md │ │ ├── classification_of_data_structure.md │ │ ├── index.md │ │ ├── number_encoding.md │ │ └── summary.md │ ├── chapter_divide_and_conquer/ │ │ ├── binary_search_recur.md │ │ ├── build_binary_tree_problem.md │ │ ├── divide_and_conquer.md │ │ ├── hanota_problem.md │ │ ├── index.md │ │ └── summary.md │ ├── chapter_dynamic_programming/ │ │ ├── dp_problem_features.md │ │ ├── dp_solution_pipeline.md │ │ ├── edit_distance_problem.md │ │ ├── index.md │ │ ├── intro_to_dynamic_programming.md │ │ ├── knapsack_problem.md │ │ ├── summary.md │ │ └── unbounded_knapsack_problem.md │ ├── chapter_graph/ │ │ ├── graph.md │ │ ├── graph_operations.md │ │ ├── graph_traversal.md │ │ ├── index.md │ │ └── summary.md │ ├── chapter_greedy/ │ │ ├── fractional_knapsack_problem.md │ │ ├── greedy_algorithm.md │ │ ├── index.md │ │ ├── max_capacity_problem.md │ │ ├── max_product_cutting_problem.md │ │ └── summary.md │ ├── chapter_hashing/ │ │ ├── hash_algorithm.md │ │ ├── hash_collision.md │ │ ├── hash_map.md │ │ ├── index.md │ │ └── summary.md │ ├── chapter_heap/ │ │ ├── build_heap.md │ │ ├── heap.md │ │ ├── index.md │ │ ├── summary.md │ │ └── top_k.md │ ├── chapter_hello_algo/ │ │ └── index.md │ ├── chapter_introduction/ │ │ ├── algorithms_are_everywhere.md │ │ ├── index.md │ │ ├── summary.md │ │ └── what_is_dsa.md │ ├── chapter_preface/ │ │ ├── about_the_book.md │ │ ├── index.md │ │ ├── suggestions.md │ │ └── summary.md │ ├── chapter_reference/ │ │ └── index.md │ ├── chapter_searching/ │ │ ├── binary_search.md │ │ ├── binary_search_edge.md │ │ ├── binary_search_insertion.md │ │ ├── index.md │ │ ├── replace_linear_by_hashing.md │ │ ├── searching_algorithm_revisited.md │ │ └── summary.md │ ├── chapter_sorting/ │ │ ├── bubble_sort.md │ │ ├── bucket_sort.md │ │ ├── counting_sort.md │ │ ├── heap_sort.md │ │ ├── index.md │ │ ├── insertion_sort.md │ │ ├── merge_sort.md │ │ ├── quick_sort.md │ │ ├── radix_sort.md │ │ ├── selection_sort.md │ │ ├── sorting_algorithm.md │ │ └── summary.md │ ├── chapter_stack_and_queue/ │ │ ├── deque.md │ │ ├── index.md │ │ ├── queue.md │ │ ├── stack.md │ │ └── summary.md │ ├── chapter_tree/ │ │ ├── array_representation_of_tree.md │ │ ├── avl_tree.md │ │ ├── binary_search_tree.md │ │ ├── binary_tree.md │ │ ├── binary_tree_traversal.md │ │ ├── index.md │ │ └── summary.md │ ├── index.html │ └── index.md └── mkdocs.yml