Tree traversal: Difference between revisions

no edit summary
No edit summary
Line 8,978:
postorder: 7 4 5 2 8 9 6 3 1
levelorder:1 2 3 4 5 6 7 8 9</pre>
 
=={{header|REBOL}}==
<lang REBOL>
 
tree: [1 [2 [4 [7 [] []] []] [5 [] []]] [3 [6 [8 [] []] [9 [] []]] []]]
; "compacted" version
tree: [1 [2 [4 [7 ] ] [5 ]] [3 [6 [8 ] [9 ]] ]]
 
preorder: func [tree [block!]][
if not empty? tree [prin rejoin [first tree " "]]
attempt [preorder second tree]
attempt [preorder third tree]
]
prin "preorder: " preorder tree
print ""
 
inorder: func [tree [block!]][
attempt [inorder second tree]
if not empty? tree [prin rejoin [first tree " "]]
attempt [inorder third tree]
]
prin "inorder: " inorder tree
print ""
 
postorder: func [tree [block!]][
attempt [postorder second tree]
attempt [postorder third tree]
if not empty? tree [prin rejoin [first tree " "]]
]
prin "postorder: " postorder tree
print ""
 
queue: []
enqueue: func [tree [block!]][append/only queue tree]
dequeue: func [queue [block!]][take queue]
level-order: func [tree [block!]][
clear head queue
queue: enqueue tree
while [not empty? queue] [
tree: dequeue queue
if not empty? tree [prin rejoin [first tree " "]]
attempt [enqueue second tree]
attempt [enqueue third tree]
]
]
prin "level-order: " level-order tree
</lang>
{{out}}
<pre>
preorder: 1 2 4 7 5 3 6 8 9
inorder: 7 4 2 5 1 8 6 9 3
postorder: 7 4 5 2 8 9 6 3 1
level-order: 1 2 3 4 5 6 7 8 9
</pre>
 
=={{header|REXX}}==
Anonymous user