Visualize a tree: Difference between revisions

m
Line 514:
`-- (null)</pre>
=={{header|Elena}}==
ELENA 3.24 :
<lang elena>import system'routines.
import extensions.
Line 523:
object theChildren.
constructor newname : value children:children
[
theValue := value.
theChildren := (children ?? Array min) toArray.
]
constructor newname : value
<= newname:value children:nil.
constructor new children:children
<= newname:emptyLiteralValueemptyLiteral children:children.
constructor newname : value child:child
<= newname:value children(Array new objectsingle:child).
get = theValue.
Line 546:
extension treeOp
{
writeTree : (node : ,prefix : childrenProp)
[
var children := node~childrenProp getchildren.
var length := children length.
children zip(RangeEnumerator new from:1 to:length) forEach(:child:index)
[
self printLine(prefix,"|").
Line 558:
var nodeLine := prefix + (index==length)iif(" ","| ").
self writeTree(child,nodeLine,childrenProp).
].
Line 564:
]
writeTree : (node : childrenProp )
= self~treeOp writeTree(node,"",childrenProp).
}
 
programpublic =program
[
var tree := Node new children:
(
Node newname:"a" children:
(
Node newname:"b" child:(Node newname:"c"),
Node newname:"d"
),
Node newname:"e"
).
console writeTree(tree, %children); readChar.
].</lang>
{{out}}
<pre>
Anonymous user