Visualize a tree: Difference between revisions

Content added Content deleted
(Added Erlang)
No edit summary
Line 341: Line 341:
| `-- (nil)
| `-- (nil)
`-- (nil)
`-- (nil)
</pre>

=={{header|Icon}} and {{header|Unicon}}==

The following works in both languages.
<lang unicon>procedure main(A)
showTree("", " _", [1, [2,[3],[4,[5],[6]],[7,[11]]], [8,[9,[10]]] ])
write()
showTree("", " _", [1, [2,[3,[4]]], [5,[6],[7,[8],[9]],[10]] ])
end

procedure showTree(prefix, lastc, A)
write(prefix, lastc, "__", A[1])
if *A > 1 then {
lastc := (if prefix[-1] == "|" then " " else " ")
every showTree(prefix||lastc||"|", "_", !A[2:2 < *A])
showTree(prefix||lastc, "`_", \A[*A])
}
end</lang>

Output:
<pre>
->tree
___1
|___2
| |___3
| |___4
| | |___5
| | `___6
| `___7
| `___11
`___8
`___9
`___10

___1
|___2
| `___3
| `___4
`___5
|___6
|___7
| |___8
| `___9
`___10
->
</pre>
</pre>