Stack
The stack component allows to do depth-first traversing (longest branches before the shortest branch of a tree), but it also facilities processing data in a certain order.
Inputs
-
Name: Children
-
Description: Any value which should be appended to the end of the stack
-
Example:
A
-
-
Name: Finished Parent
-
Description: Pops the last value in the stack.
-
Example: Any message
-
Outputs
-
Name: Output
-
Description: Last value in the stack.
-
Example (reporting)
Folder structure:
A
/ \
B C
/ \
D EIn this example, we would like to output to the log, in the order shown below. The objects have a parent-child relationship. The execution flow will look as follows:
-
Retrieve A (stack: [])
-
Send A to log (stack: [])
-
Get children of A in reversed order and add to stack using
Children
input (stack: [C, B]) -
Send a message to
Finished Parent
input of stack, pops B (stack: [C]) -
Send B to log (stack: [C])
-
Get children of B in reversed order and add to stack using
Children
input (stack: [C, E, D]) -
Send a message to
Finished Parent
input of stack, pops D (stack: [C, E]) -
Send D to log (stack: [C, E])
-
Get children of D in reversed order and add to stack using
Children
input (stack: [C, E]) -
Send a message to
Finished Parent
input of stack, pops E (stack: [C]) -
Send E to log (stack: [C])
-
Get children of E in reversed order and add to stack using
Children
input (stack: [C]) -
Send a message to
Finished Parent
input of stack, pops C (stack: []) -
Send C to log (stack: [])
noteTo have the result in ascending order, you need to sort the input in descending (reversed) order as shown in the example above.
-
-