Packages

ExTed is a naive implementation of a tree edit distance algorithm in Elixir. Please note that this algorithm has exponential runtime complexity!

Current section

Files

Jump to
exted lib postorder_traversal.ex
Raw

lib/postorder_traversal.ex

defmodule PostorderTraversal do
def traverse(tree, fun) do
postorder([], tree, fun)
end
defp postorder(traversed, {label, _metadata, elems}, fun) do
postorder([fun.(label) | traversed], elems, fun)
end
defp postorder(traversed, [head | tail], fun) do
traversed
|> postorder(tail, fun)
|> postorder(head, fun)
end
defp postorder(traversed, [], _fun) do
traversed
end
end