`
风火山林
  • 浏览: 147202 次
  • 性别: Icon_minigender_1
  • 来自: 汕尾
最近访客 更多访客>>
社区版块
存档分类
最新评论

C# 遍历二叉树

阅读更多
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4.  
  5. namespace structure  
  6. {  
  7.     class Program  
  8.     {  
  9.         #region 二叉树结点数据结构的定义   
  10.         //二叉树结点数据结构包括数据域,左右结点以及父结点成员;  
  11.       class nodes﹤T﹥  
  12.         {  
  13.             T data;  
  14.             nodes﹤T﹥ Lnode, Rnode, Pnode;  
  15.             public T Data  
  16.             {  
  17.                 set { data = value; }  
  18.                 get { return data; }  
  19.  
  20.             }  
  21.             public nodes﹤T﹥ LNode  
  22.             {  
  23.                 set { Lnode = value; }  
  24.                 get { return Lnode; }  
  25.             }  
  26.             public nodes﹤T﹥ RNode  
  27.             {  
  28.                 set { Rnode = value; }  
  29.                 get { return Rnode; }  
  30.  
  31.             }  
  32.  
  33.             public nodes﹤T﹥ PNode  
  34.             {  
  35.                 set { Pnode = value; }  
  36.                 get { return Pnode; }  
  37.  
  38.             }  
  39.           public nodes()  
  40.           { }  
  41.           public nodes(T data)  
  42.           {  
  43.               this.data = data;  
  44.           }  
  45.  
  46.         }   
  47.         #endregion  
  48.  
  49.         #region 先序编历二叉树  
  50.         static void PreOrder﹤T﹥(nodes﹤T﹥ rootNode)  
  51.         {  
  52.             if (rootNode != null)  
  53.             {  
  54.                 Console.WriteLine(rootNode.Data);  
  55.                 PreOrder﹤T﹥(rootNode.LNode);  
  56.                 PreOrder﹤T﹥(rootNode.RNode);  
  57.  
  58.             }  
  59.         }  
  60.           
  61.         #endregion  
  62.  
  63.         #region 构造一棵已知的二叉树  
  64.  
  65.         static nodes﹤string﹥ BinTree()  
  66.         {  
  67.             nodes﹤string﹥[] binTree = new nodes﹤string﹥[8];  
  68.             //创建结点  
  69.             binTree[0] = new nodes﹤string﹥("A");  
  70.             binTree[1] = new nodes﹤string﹥("B");  
  71.             binTree[2] = new nodes﹤string﹥("C");  
  72.             binTree[3] = new nodes﹤string﹥("D");  
  73.             binTree[4] = new nodes﹤string﹥("E");  
  74.             binTree[5] = new nodes﹤string﹥("F");  
  75.             binTree[6] = new nodes﹤string﹥("G");  
  76.             binTree[7] = new nodes﹤string﹥("H");  
  77.             //使用层次遍历二叉树的思想,构造一个已知的二叉树  
  78.  
  79.             binTree[0].LNode = binTree[1];  
  80.             binTree[0].RNode = binTree[2];  
  81.             binTree[1].RNode = binTree[3];  
  82.             binTree[2].LNode = binTree[4];  
  83.             binTree[2].RNode = binTree[5];  
  84.             binTree[3].LNode = binTree[6];  
  85.             binTree[3].RNode = binTree[7];  
  86.             //返回二叉树的根结点  
  87.             return binTree[0];  
  88.  
  89.         }  
  90.         #endregion  
  91.  
  92.         #region 中序遍历二叉树  
  93.         static void MidOrder﹤T﹥(nodes﹤T﹥ rootNode)  
  94.         {  
  95.             if (rootNode != null)  
  96.             {  
  97.                 MidOrder﹤T﹥(rootNode.LNode);  
  98.                 Console.WriteLine(rootNode.Data);  
  99.                 MidOrder﹤T﹥(rootNode.RNode);  
  100.             }  
  101.         }   
  102.         #endregion  
  103.         后序遍历二叉树#region 后序遍历二叉树  
  104.         static void AfterOrder﹤T﹥(nodes﹤T﹥ rootNode)  
  105.         {  
  106.             if (rootNode != null)  
  107.             {  
  108.                 AfterOrder﹤T﹥(rootNode.LNode);  
  109.                 AfterOrder﹤T﹥(rootNode.RNode);  
  110.                 Console.WriteLine(rootNode.Data);  
  111.             }  
  112.  
  113.         }   
  114.         #endregion  
  115.  
  116.        #region 层次遍历二叉树  
  117.         static void LayerOrder﹤T﹥(nodes﹤T﹥ rootNode)  
  118.         {  
  119.             nodes﹤T﹥[] Nodes = new nodes﹤T﹥[20];  
  120.             int front = -1;  
  121.             int rear = -1;  
  122.             if (rootNode != null)  
  123.             {  
  124.                 rear++;  
  125.                 Nodes[rear] = rootNode;  
  126.  
  127.             }  
  128.  
  129.             while (front != rear)  
  130.             {  
  131.                 front++;  
  132.                 rootNode = Nodes[front];  
  133.                 Console.WriteLine(rootNode.Data);  
  134.                 if (rootNode.LNode != null)  
  135.                 {  
  136.                     rear++;  
  137.                     Nodes[rear] = rootNode.LNode;  
  138.                 }  
  139.                 if (rootNode.RNode != null)  
  140.                 {  
  141.                     rear++;  
  142.                     Nodes[rear] = rootNode.RNode;  
  143.                 }  
  144.             }  
  145.         }  
  146.           
  147.         #endregion  
  148.  
  149.       #region 测试的主方法  
  150.         static void Main(string[] args)  
  151.         {  
  152.             nodes﹤string﹥ rootNode = BinTree();  
  153.  
  154.             Console.WriteLine("先序遍历方法遍历二叉树:");  
  155.             PreOrder﹤string﹥(rootNode);  
  156.              
  157.             Console.WriteLine("中序遍历方法遍历二叉树:");  
  158.             MidOrder﹤string﹥(rootNode);  
  159.               
  160.             Console.WriteLine("后序遍历方法遍历二叉树:");  
  161.             AfterOrder﹤string﹥(rootNode);  
  162.  
  163.  
  164.             Console.WriteLine("层次遍历方法遍历二叉树:");  
  165.             LayerOrder﹤string﹥(rootNode);  
  166.  
  167.  
  168.             Console.Read();  
  169.  
  170.         }   
  171.         #endregion  
  172.     }  
分享到:
评论

相关推荐

    C# Windows 遍历二叉树

    然后是遍历二叉树,常见的遍历方法有前序遍历、中序遍历和后序遍历。这些遍历方法在实现时都遵循特定的访问顺序。 1. 前序遍历(根-左-右): ```csharp void PreOrderTraversal(TreeNode<T> node) { if (node != ...

    二叉树 各种遍历算法 C#实现

    以上就是二叉树的前序、中序和后序遍历的C#实现。理解并熟练掌握这些遍历方法对于处理二叉树问题至关重要。在实际编程中,可以根据需求选择适合的遍历方式,或者通过组合遍历方式解决更复杂的问题。

    遍历二叉树的4个非递归算法.rar_binary tree_二叉树_二叉树 非递归 遍历_递归_遍历 CSharp

    本资源"遍历二叉树的4个非递归算法.rar"提供了C#语言实现的这四种非递归遍历方法,对于学习者来说是非常宝贵的资料。 1. **前序遍历**(Root-Left-Right): 在前序遍历中,我们首先访问根节点,然后递归地遍历左...

    C#实现二叉树遍历算法

    4. **层次遍历**(LevelOrder):自上而下、自左向右遍历二叉树的节点。层次遍历通常使用队列作为辅助数据结构,从根节点开始,逐层加入队列并访问节点。由于给定的代码没有具体实现层次遍历,我们可以通过以下步骤...

    C#非递归先序遍历二叉树实例

    本文实例讲述了C#非递归先序遍历二叉树的方法。分享给大家供大家参考。具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; ...

    数据结构实验报告6-树-二叉树的遍历算法-实验内容及要求.docx

    4. **层次遍历**:按层顺序遍历二叉树,同一层的节点按从左到右的顺序访问。实现层次遍历需要借助队列结构,特别是循环队列。 对于循环队列的设计,需要考虑以下几个方面: - 初始化队列,设置队首指针`f`和队尾...

    数据结构C#二叉树的基本运算

    在C#中,我们可以定义一个二叉树节点类,包含值、左子节点和右子节点的引用,然后实现以上三种遍历方法。遍历方法对于理解和操作二叉树至关重要,例如在构建表达式树、搜索和排序等任务中。 二叉树的基本运算还包括...

    二叉树的建立和遍历(c#)

    在C#编程中,我们可以利用类来表示二叉树的节点,并实现相关操作。本项目旨在通过用户输入构建二叉树,并实现层次遍历、先序遍历、中序遍历和后序遍历四种常见的遍历方法。其中,至少有一种遍历方式需使用非递归的...

    用c#编写的二叉树的图形化显示

    本项目就是这样一个示例,通过C#实现二叉树的动态绘制,帮助用户理解和分析二叉树的形态。 首先,我们要了解二叉树的基本概念。二叉树是由节点(或称为顶点)和边构成的图,每个节点最多有两个子节点,通常称为左子...

    C#实现二叉树基本操作,排序,计算和文件读写

    在C#编程中,二叉树是一种非常重要的数据结构,广泛应用于各种算法和问题解决中。这个名为"TreeApp"的项目显然旨在演示如何利用C#实现二叉树的基本操作,包括插入、删除、查找等,以及如何进行二叉树排序、计算和...

    C#二叉树算法分析

    4. **遍历二叉树**:二叉树的遍历主要有三种方式:前序遍历、中序遍历和后序遍历。遍历主要用于打印树的所有节点或执行某些操作。 ```csharp // 前序遍历:根-左-右 public void PreOrderTraversal(TreeNode node) ...

    二叉树的建立及前中后序遍历

    就是一个 简单的 二叉树的建立及前中后序遍历的 代码

    数据结构二叉树操作;C#二叉树;C#数据结构二叉树

    在C#编程语言中,理解和掌握二叉树的操作至关重要,特别是对于开发高效软件和系统而言。这里我们将深入探讨二叉树的基本概念、C#中的实现以及与Visual Studio 2005(VS2005)的结合。 **二叉树基本概念** 二叉树是...

    C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法

    遍历二叉树是访问树中所有节点的过程,通常有三种基本的遍历方法:前序遍历(Preorder Traversal)、中序遍历(Inorder Traversal)和后序遍历(Postorder Traversal)。这些遍历方法在C#编程中有着广泛的应用,如...

    二叉树的遍历方法和递归实现

    #### 二、遍历二叉树的四种基本方式 二叉树的遍历主要分为四种类型:先序遍历、中序遍历、后序遍历以及层次遍历。每种遍历方式都有其独特的访问顺序,具体如下: 1. **先序遍历(Pre-order Traversal)**:遵循...

    c# 二叉树的建立

    ### C# 中二叉树的建立与操作 在C#编程语言中,二叉树是一种重要的数据结构,广泛应用于各种算法设计和问题解决场景中。本文将深入探讨如何在C#中实现二叉树,包括节点类(`Node<T>`)和二叉树类(`BiTree<T>`)的...

    c#.net 版二叉树下载

    下面是一个简单的主函数示例,用于演示如何构建并遍历二叉树。 ```csharp class Program { static void Main(string[] args) { TreeNode root = BuildBinaryTree(); Console.WriteLine("前序遍历结果:"); ...

    C# 二叉树遍历

    C#完成的二叉树递归和非递归的遍历。BTreeNode是节点类,Visited是ENUM类型的表示当前节点是否被访问以及被访问的是左孩子还是右孩子(非递归后序遍历用到) BTree是二叉树类,preVisit,InVisit,BackVisit分别是...

    二叉树的遍历c#的控制台写得

    总的来说,二叉树遍历是数据结构和算法的重要组成部分,它在C#控制台程序中可以通过递归方法轻松实现。通过理解这些基本操作,你可以在各种应用中灵活地使用二叉树,例如搜索、排序、表达式求值等。

Global site tag (gtag.js) - Google Analytics