function preorder(node): # visit, then children

   if node is null: return
   visit(node.value)
   for child in node.children: preorder(child)

 function postorder(node): # children, then visit
   if node is null: return

   for child in node.children: postorder(child)
   visit(node.value)

 function inorder(node): # binary trees only: left, visit, right
   if node is null: return

   inorder(node.left); visit(node.value); inorder(node.right)
