FRArt Algoliterary PublishingPerforming the Tree Sort algorithm

  • type: Article
  • ref: DOC.2023.4
  • Date begin: October 26 2021
  • Date end: October 30 2021
  • description:

    Workshop by Gijs de Heij where he introduced the students of ESA St Luc to the history, use and functioning of the tree sort algorithm.

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 ordered 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.