22 lines
595 B
Tcl
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
|