返回顶部

收藏

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);
    }
//该片段来自于http://outofmemory.cn

标签:c#,.net,基础

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. dormy 发表 2013-12-12 02:28:41 c#.netDataGrid绑定数据库数据
  2. 汪宇杰 发表 2015-04-22 07:08:56 如何高逼格读取Web.config中的AppSettings
  3. 姚 广远 发表 2015-06-22 07:01:45 C++ 中的封送处理概述
  4. 姚 广远 发表 2015-04-15 05:20:48 C#语言规范—语句
  5. Herb Sutter 发表 2013-07-09 16:47:02 Recommended reading: Why mobile web apps are slow
  6. 姚 广远 发表 2015-04-14 06:17:41 C# 语言规范 —类型、变量和值
  7. itcodes 发表 2014-07-22 17:00:00 C#计算时间差。
  8. zangw 发表 2015-01-21 11:32:10 Named pipe client throw UnauthorizedAccessExceptio
  9. 姚 广远 发表 2015-04-08 01:01:52 .NET逻辑分层架构总结
  10. 姚 广远 发表 2015-04-13 05:03:47 .NET运行机制
  11. 姚 广远 发表 2015-04-13 02:54:10 C# 与 C++ 数据类型对照表
  12. Herb Sutter 发表 2012-04-07 06:13:01 We want await! A C# talk that’s applicable to C++