Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
46
Task/Tree-traversal/REBOL/tree-traversal.rebol
Normal file
46
Task/Tree-traversal/REBOL/tree-traversal.rebol
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
tree: [1 [2 [4 [7 [] []] []] [5 [] []]] [3 [6 [8 [] []] [9 [] []]] []]]
|
||||
; "compacted" version
|
||||
tree: [1 [2 [4 [7 ] ] [5 ]] [3 [6 [8 ] [9 ]] ]]
|
||||
|
||||
visit: func [tree [block!]][prin rejoin [first tree " "]]
|
||||
left: :second
|
||||
right: :third
|
||||
|
||||
preorder: func [tree [block!]][
|
||||
if not empty? tree [visit tree]
|
||||
attempt [preorder left tree]
|
||||
attempt [preorder right tree]
|
||||
]
|
||||
prin "preorder: " preorder tree
|
||||
print ""
|
||||
|
||||
inorder: func [tree [block!]][
|
||||
attempt [inorder left tree]
|
||||
if not empty? tree [visit tree]
|
||||
attempt [inorder right tree]
|
||||
]
|
||||
prin "inorder: " inorder tree
|
||||
print ""
|
||||
|
||||
postorder: func [tree [block!]][
|
||||
attempt [postorder left tree]
|
||||
attempt [postorder right tree]
|
||||
if not empty? tree [visit 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 [visit tree]
|
||||
attempt [enqueue left tree]
|
||||
attempt [enqueue right tree]
|
||||
]
|
||||
]
|
||||
prin "level-order: " level-order tree
|
||||
Loading…
Add table
Add a link
Reference in a new issue