c#分别用前序遍历、中序遍历和后序遍历打印二叉树
public class binarytreenode
{
public binarytreenode left { get; set; }
public binarytreenode right { get; set; }
public int data { get; set; }
public binarytreenode(int data)
{
this.data = data;
}
}
public enum treetraversal
{
preorder,
inorder,
postorder
}
public void printtree(binarytreenode root, treetraversal treetraversal)
{
action printvalue = delegate(int v)
{
console.write(v + " ");
};
switch (treetraversal)
{
case treetraversal.preorder:
preordertraversal(printvalue, root);
break;
case treetraversal.inorder:
inordertraversal(printvalue, root);
break;
case treetraversal.postorder:
postordertraversal(printvalue, root);
break;
default: break;
}
}
public void preordertraversal(action action, binarytreenode root)
{
if (root == null)
return;
action(root.data);
preordertraversal(action, root.left);
preordertraversal(action, root.right);
}
public void inordertraversal(action action, binarytreenode root)
{
if (root == null)
return;
inordertraversal(action, root.left);
action(root.data);
inordertraversal(action, root.right);
}
public void postordertraversal(action action, binarytreenode root)
{
if (root == null)
return;
postordertraversal(action, root.left);
postordertraversal(action, root.right);
action(root.data);
}