Tree traversal: Difference between revisions

→‎{{header|Quackery}}: had second thoughts about alternative version, it wasn't actually a level-order traversal
(→‎{{header|Quackery}}: had second thoughts about alternative version, it wasn't actually a level-order traversal)
Line 8,818:
=={{header|Quackery}}==
 
<lang Quackery> [ this ] is nil ( --> [ )
 
[ ' [ 1
[ 2
Line 8,831:
[ 9 nil nil ] ]
nil ] ] ] is tree ( --> [ )
 
[ dup ' nil = iff drop done
drop done
unpack swap rot
echo sp
recurse
recurse ] is pre-order ( [ --> )
 
[ dup ' nil = iff drop done
drop done
unpack unrot
recurse
echo sp
recurse ] is in-order ( [ --> )
 
[ dup ' nil = iff drop done
drop done
unpack swap
recurse
recurse
echo sp ] is post-order ( [ --> )
 
[ stack [ ] ] is queue ( --> s )
 
[ queue share [] = ] is qempty ( --> b )
 
[ queue take
swap nested join
queue put ] is enqueue ( x --> )
 
[ queue take
behead swap
queue put ] is dequeue ( --> x )
 
[ enqueue
[ qempty not while
dequeue
dup ' nil = iff
drop again
unpack swap
Line 8,886 ⟶ 8,883:
7 4 5 2 8 9 6 3 1
1 2 3 4 5 6 7 8 9</pre>
 
===alternative level-order===
 
<lang Quackery> forward is flatten
 
[ [] swap
witheach
[ dup nest?
if flatten
join ] ] resolves flatten ( [ --> [ )
 
[ flatten
witheach [ echo sp ] ] is level-order ( [ --> )</lang>
 
{{out}}
 
<pre>1 2 3 4 5 6 7 8 9</pre>
 
=={{header|Racket}}==
1,462

edits