RosettaCodeData/Task/Tree-traversal/Tcl/tree-traversal-2.tcl
2023-07-01 13:44:08 -04:00

22 lines
595 B
Tcl

# Helpers to make construction and listing of a whole tree simpler
proc Tree nested {
lassign $nested v l r
if {$l ne ""} {set l [Tree $l]}
if {$r ne ""} {set r [Tree $r]}
tree new $v $l $r
}
proc Listify {tree order} {
set list {}
$tree $order v {
lappend list $v
}
return $list
}
# Make a tree, print it a few ways, and destroy the tree
set t [Tree {1 {2 {4 7} 5} {3 {6 8 9}}}]
puts "preorder: [Listify $t preorder]"
puts "inorder: [Listify $t inorder]"
puts "postorder: [Listify $t postorder]"
puts "level-order: [Listify $t levelorder]"
$t destroy