|
1 | 1 | # Sprint Challenge: Data Structures and Algorithms |
2 | 2 |
|
3 | | -For this sprint challenge, you'll be implementing a few functions that build off of some of the data structures you implemented in the first half of the week. Then you'll be analyzing the runtimes of all of the data structure methods. |
| 3 | +For the data structures portion of this sprint challenge, you'll be implementing a few functions that build off of some of the data structures you implemented in the first half of the week. Then you'll be analyzing the runtimes of these functions. |
4 | 4 |
|
5 | 5 | For the algorithms portion of the sprint challenge, you'll be answering the questions posed in the `exercises.pdf` file regarding runtime complexities and algorithmic paradigms. |
6 | 6 |
|
7 | 7 | ## Data Structures |
8 | | -Before getting started, run `npm install` in the root-level directory to install needed dependencies for testing. |
9 | 8 |
|
10 | 9 | ### Task 1. Implement Depth-First and Breadth-First Traversal on the Binary Search Tree Class |
11 | | -Navigate into the `data_structures` directory. Inside the `src` directory, you'll see the `binary-search-tree.js` file with the completed code for the binary search tree class. Your first task is to implement the methods `depthFirstForEach` and `breadthFirstForEach` on the `BinarySearchTree` class. Think about what data structures you'll need to use in order to achieve the desired order of each respective method: |
| 10 | +Navigate into the `ex_1` directory in the `data_structures` directory. Inside, you'll see the `binary-search-tree.py` file with a complete implementation of the binary search tree class. Your first task is to implement the methods `depth_first_for_each` and `breadth_first_for_each` on the `BinarySearchTree` class: |
12 | 11 |
|
13 | | - * `depthFirstForEach(cb)` receives a callback function as a parameter. This method iterates over the binary search tree in [depth-first](https://en.wikipedia.org/wiki/Depth-first_search) order, applying the supplied callback function to each tree element in turn. |
14 | | - * `breadthFirstForEach(cb)` receives a callback function as a parameter. This method iterates over the binary search tree in [breadth-first](https://en.wikipedia.org/wiki/Breadth-first_search) order, applying the supplied callback function to each tree element in turn. |
| 12 | + * `depth_first_for_each(cb)` receives a callback function as a parameter. This method iterates over the binary search tree in [depth-first](https://en.wikipedia.org/wiki/Depth-first_search) order, applying the supplied callback function to each tree element in turn. |
| 13 | + * `breadth_first_for_each(cb)` receives a callback function as a parameter. This method iterates over the binary search tree in [breadth-first](https://en.wikipedia.org/wiki/Breadth-first_search) order, applying the supplied callback function to each tree element in turn. |
15 | 14 |
|
16 | | -Run `npm test binary-search-tree` to run the tests for this function to ensure that your implementation is correct. |
| 15 | +NOTE: In Python, anonymous functions are referred to as "lambda functions". When passing in a callback function as input to either `depth_first_for_each` or `breadth_first_for_each`, you'll want to define the callbacks as lambda functions. For more information on lambda functions, check out this documentation: [https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions](https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions) |
| 16 | + |
| 17 | +Run `python3 test_binary_search_tree.py` to run the tests for these methods to ensure that your implementation is correct. |
17 | 18 |
|
18 | 19 | ### Task 2. Implement Heapsort |
19 | | -Inside the `src` directory you'll also find the `heap.js` file with the completed code for the Heap class that you worked on. Your second task is to implement a sorting method called [heapsort](https://en.wikipedia.org/wiki/Heapsort) that uses the heap data structure in order to sort an array of numbers. Your `heapsort` function should return a new array containing all of the sorted data. |
| 20 | +Inside the `ex_2` directory you'll find the `heap.py` file with a working implementation of the heap class. Your second task is to implement a sorting method called [heapsort](https://en.wikipedia.org/wiki/Heapsort) that uses the heap data structure in order to sort an array of numbers. Your `heapsort` function should return a new array containing all of the sorted data. |
20 | 21 |
|
21 | | -Run `npm test heap` to run the tests for your `heapsort` function to ensure that your implementation is correct. |
| 22 | +Run `python3 test_heap.py` to run the tests for your `heapsort` function to ensure that your implementation is correct. |
22 | 23 |
|
23 | 24 | ### Task 3. Analyze some runtimes |
24 | 25 | Open up the `Data_Structures_Answers.md` file. This is where you'll jot down your answers for the runtimes of the functions you just implemented. Be sure to also answer any other questions posed in the `Answers.md` file! |
|
0 commit comments