adding md on tree sort algorithm workshop
							parent
							
								
									cce90e17d2
								
							
						
					
					
						commit
						64dd1fa5ae
					
				| @ -0,0 +1,89 @@ | ||||
| Title: Performing the tree sort algorithm | ||||
| Date: 18-11-2021 | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| Repository for the workshop on the  [tree sort algorithm](https://en.wikipedia.org/wiki/Tree_sort). | ||||
| 
 | ||||
| You'll find the workshop material in the `workshop` folder. | ||||
| 
 | ||||
| ## Recipes | ||||
| 
 | ||||
| Recipes used during the workshop to execute the tree sort algorithm manually (with a group of people). | ||||
| 
 | ||||
| ### To insert a node within a tree | ||||
| 
 | ||||
| *This recipe inserts a new node into an (empty) tree. It is assumed there is a place defined where the tree will be started (rooting point?). When the recipe is executed the **current position** is considered to be rooting point.* | ||||
| 
 | ||||
| 1. Look at your *current position*, if it's empty (there is no node) this will be your place: you are inserted in the tree, and the recipe is finished. If there is a node continue with step two. | ||||
| 
 | ||||
| 2. Ask the node in the *current position* for its value. | ||||
| 
 | ||||
| 3. Compare the answer of the node to your own value. Is your value smaller than theirs? Then follow the left arm of the node, and take that as the new *current position* and move back to step one. Otherwise continue with step four. | ||||
| 
 | ||||
| 4. Is your own value the same as or bigger than the answer the node gave? Then follow the right arm of the node, and take that as your new *current position* and go back to step one. | ||||
| 
 | ||||
| 
 | ||||
| ### To measure the depth of a tree | ||||
| 
 | ||||
| *This recipe discovers the depth of the deepest branch in the (sub)tree. It is initiated by asking the root or any other node to measure its depth.* | ||||
| 
 | ||||
| 1. Ask the node attached to your left arm for its depth, or take zero if you have none. | ||||
| 
 | ||||
| 2. Ask the node attached to your right arm for its depth, or take zero if you have none. | ||||
| 
 | ||||
| 3. Pick the greater one out of the answers you collected in step one and two, and add 1 (increment by one). | ||||
| 
 | ||||
| 4. Answer the number you calculated in step 3 to the node which asked you to measure your depth. | ||||
| 
 | ||||
| 
 | ||||
| ### To traverse the tree in order: | ||||
| 
 | ||||
| *This recipe transforms the (sub)tree into an orderd row (or list)*. It is initiated by asking the root or any other node to traverse. | ||||
| 
 | ||||
| 1. If you have a left node: ask it to traverse. Once it has finished traversing ask the resulting row (list) to stand to  the *left* of you. It is important the row maintains it order. | ||||
| 
 | ||||
| 2. If you have a right node: ask it to traverse. Once it has finished traversing ask the resulting row (list) to stand to  the *right* of you. It is important the row maintains it order. | ||||
| 
 | ||||
| 3. By combining the row on the left, yourself, and the row to your right a new row has formed. Tell the node who asked you to traverse that you're ready. | ||||
| 
 | ||||
| 
 | ||||
| ## Code implementations | ||||
| 
 | ||||
| In the folder `workshop/code` a simple implementation of the tree sort algorithm can be found. | ||||
| 
 | ||||
| ### workshop/code/treesort.py | ||||
| 
 | ||||
| Implementation of the binary search tree. When the script is | ||||
| 
 | ||||
| ``` | ||||
| python workshop/code/treesort.py | ||||
| ``` | ||||
| 
 | ||||
| ### workshop/code/tree-visualizer.py | ||||
| 
 | ||||
| Visualizes a tree using graphviz | ||||
| 
 | ||||
| ``` | ||||
| python workshop/code/tree_visualizer.py | ||||
| ``` | ||||
| 
 | ||||
| ### workshop/code/text-tree.py | ||||
| 
 | ||||
| Reads a text (`workshop/text-to-sort.txt`) and generates a visual tree: | ||||
| 
 | ||||
| ``` | ||||
| python workshop/code/text_tree.py | ||||
| ``` | ||||
| 
 | ||||
| ## Requirements | ||||
| 
 | ||||
| The implementations are written in python and require python 3, find information on how to [install python here](https://www.python.org/downloads/) | ||||
| 
 | ||||
| The visualizer and the text_tree both use graphviz to generate the visualization. Find information on how to [install graphviz here](https://graphviz.org/download/) | ||||
| 
 | ||||
| The visualizer and the text_tree also require graphviz the [graphviz python bindings](https://pypi.org/project/graphviz). The easiest way to install them is through pip: | ||||
| 
 | ||||
| ``` | ||||
| pip3 install graphviz | ||||
| ``` | ||||
					Loading…
					
					
				
		Reference in New Issue