37 lines
991 B
Plaintext
37 lines
991 B
Plaintext
data Tree = Empty | Node( value, left, right )
|
|
|
|
def
|
|
preorder( Empty ) = []
|
|
preorder( Node(v, l, r) ) = [v] + preorder( l ) + preorder( r )
|
|
|
|
inorder( Empty ) = []
|
|
inorder( Node(v, l, r) ) = inorder( l ) + [v] + inorder( r )
|
|
|
|
postorder( Empty ) = []
|
|
postorder( Node(v, l, r) ) = postorder( l ) + postorder( r ) + [v]
|
|
|
|
levelorder( x ) =
|
|
def
|
|
order( [] ) = []
|
|
order( Empty : xs ) = order( xs )
|
|
order( Node(v, l, r) : xs ) = v : order( xs + [l, r] )
|
|
|
|
order( [x] )
|
|
|
|
tree = Node( 1,
|
|
Node( 2,
|
|
Node( 4,
|
|
Node( 7, Empty, Empty ),
|
|
Empty ),
|
|
Node( 5, Empty, Empty ) ),
|
|
Node( 3,
|
|
Node( 6,
|
|
Node( 8, Empty, Empty ),
|
|
Node( 9, Empty, Empty ) ),
|
|
Empty ) )
|
|
|
|
println( preorder(tree) )
|
|
println( inorder(tree) )
|
|
println( postorder(tree) )
|
|
println( levelorder(tree) )
|