C#分别用前序遍历、中序遍历和后序遍历打印二叉树

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

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<int> 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<int> action, BinaryTreeNode root)
    {
        if (root == null)
            return;
 
        action(root.Data);
        PreOrderTraversal(action, root.Left);
        PreOrderTraversal(action, root.Right);
    }
 
    public void InOrderTraversal(Action<int> action, BinaryTreeNode root)
    {
        if (root == null)
            return;
 
        InOrderTraversal(action, root.Left);
        action(root.Data);
        InOrderTraversal(action, root.Right);
    }
 
    public void PostOrderTraversal(Action<int> action, BinaryTreeNode root)
    {
        if (root == null)
            return;
 
        PostOrderTraversal(action, root.Left);
        PostOrderTraversal(action, root.Right);
        action(root.Data);
    }