RosettaCodeData/Task/Tree-traversal/Julia/tree-traversal.julia

27 lines
964 B
Text
Raw Permalink Normal View History

2015-11-18 06:14:39 +00:00
tree = Any[1, Any[2, Any[4, Any[7, Any[],
Any[]],
Any[]],
Any[5, Any[],
Any[]]],
Any[3, Any[6, Any[8, Any[],
Any[]],
Any[9, Any[],
Any[]]],
Any[]]]
2014-01-17 05:32:22 +00:00
2015-02-20 00:35:01 -05:00
preorder(t, f) = if !isempty(t)
f(t[1]); preorder(t[2], f); preorder(t[3], f)
end
2014-01-17 05:32:22 +00:00
2015-02-20 00:35:01 -05:00
inorder(t, f) = if !isempty(t)
inorder(t[2], f); f(t[1]); inorder(t[3], f)
2014-01-17 05:32:22 +00:00
end
2015-02-20 00:35:01 -05:00
postorder(t, f) = if !isempty(t)
postorder(t[2], f); postorder(t[3], f); f(t[1])
2014-01-17 05:32:22 +00:00
end
2015-02-20 00:35:01 -05:00
levelorder(t, f) = while !isempty(t)
2015-11-18 06:14:39 +00:00
t = mapreduce(x -> isa(x, Number) ? (f(x); []) : x, vcat, t)
2015-02-20 00:35:01 -05:00
end