33 lines
676 B
Plaintext
33 lines
676 B
Plaintext
procedure main()
|
|
bTree := [1, [2, [4, [7]], [5]], [3, [6, [8], [9]]]]
|
|
showTree(bTree, preorder|inorder|postorder|levelorder)
|
|
end
|
|
|
|
procedure showTree(tree, f)
|
|
writes(image(f),":\t")
|
|
every writes(" ",f(tree)[1])
|
|
write()
|
|
end
|
|
|
|
procedure preorder(L)
|
|
if \L then suspend L | preorder(L[2|3])
|
|
end
|
|
|
|
procedure inorder(L)
|
|
if \L then suspend inorder(L[2]) | L | inorder(L[3])
|
|
end
|
|
|
|
procedure postorder(L)
|
|
if \L then suspend postorder(L[2|3]) | L
|
|
end
|
|
|
|
procedure levelorder(L)
|
|
if \L then {
|
|
queue := [L]
|
|
while nextnode := get(queue) do {
|
|
every put(queue, \nextnode[2|3])
|
|
suspend nextnode
|
|
}
|
|
}
|
|
end
|