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

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

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);
    }      

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:C# 操作windows注册表

下一篇:C#数字转换成大写人民币金额