iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中怎么实现一个二叉树遍历算法
  • 693
分享到

C#中怎么实现一个二叉树遍历算法

2023-06-18 00:06:50 693人浏览 泡泡鱼
摘要

这篇文章给大家介绍C#中怎么实现一个二叉树遍历算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#算法实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)进行C#二叉树遍历。希望能

这篇文章给大家介绍C#中怎么实现一个二叉树遍历算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

C#算法实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)进行C#二叉树遍历。希望能给有需要人带来帮助,也希望能得到大家的指点。有关C#数据结构的书在书店里找到,网上也是极少,如果你有好的学习资源别忘了告诉我。先谢了。数据结构对一个程序员来说,现在是太重要了,数据结构学得好的人,逻辑思维一定很强,在程序设计的时候,就不会觉得太费劲了。而且是在设计多层应用程序的时候,真是让人绞尽脑汁啊。趁自己还年轻,赶紧练练脑子。哈哈,咱们尽快进入主题吧。

本程序中将用到一棵已知的二叉树如图(二叉树图)所示。

C#中怎么实现一个二叉树遍历算法

下面简单介绍一下几种算法和思路:

◆C#二叉树遍历算法之先序遍历:

访问根结点

按先序遍历左子树;

按先序遍历右子树;

例如:遍历已知二叉树结果为:A-﹥B-﹥D-﹥G-﹥H-﹥C-﹥E-﹥F

◆C#二叉树遍历算法之中序遍历:

按中序遍历左子树;

访问根结点;

按中序遍历右子树;

例如遍历已知二叉树的结果:B-﹥G-﹥D-﹥H-﹥A-﹥E-﹥C-﹥F

◆C#二叉树遍历算法之后序遍历:

按后序遍历左子树;

按后序遍历右子树;

访问根结点;

例如遍历已知二叉树的结果:G-﹥H-﹥D-﹥B-﹥E-﹥F-﹥C-﹥A

◆C#二叉树遍历算法之层次遍历:

从上到下,从左到右遍历二叉树的各个结点(实现时需要借辅助容器);

例如遍历已知二叉树的结果:A-﹥B-﹥C-﹥D-﹥E-﹥F-﹥G-﹥H

以下是整个二叉遍历算法解决方案的代码:

using System;  using System.Collections.Generic;  using System.Text;   namespace structure  {      class Program      {          #region 二叉树结点数据结构的定义           //二叉树结点数据结构包括数据域,左右结点以及父结点成员;        class nodes﹤T﹥          {              T data;              nodes﹤T﹥ Lnode, Rnode, Pnode;              public T Data              {                  set { data = value; }                  get { return data; }               }              public nodes﹤T﹥ LNode              {                  set { Lnode = value; }                  get { return Lnode; }              }              public nodes﹤T﹥ RNode              {                  set { Rnode = value; }                  get { return Rnode; }               }               public nodes﹤T﹥ PNode              {                  set { Pnode = value; }                  get { return Pnode; }               }            public nodes()            { }            public nodes(T data)            {                this.data = data;            }           }           #endregion           #region 先序编历二叉树          static void PreOrder﹤T﹥(nodes﹤T﹥ rootNode)          {              if (rootNode != null)              {                  Console.WriteLine(rootNode.Data);                  PreOrder﹤T﹥(rootNode.LNode);                  PreOrder﹤T﹥(rootNode.RNode);               }          }                    #endregion           #region 构造一棵已知的二叉树           static nodes﹤string﹥ BinTree()          {              nodes﹤string﹥[] binTree = new nodes﹤string﹥[8];              //创建结点              binTree[0] = new nodes﹤string﹥("A");              binTree[1] = new nodes﹤string﹥("B");              binTree[2] = new nodes﹤string﹥("C");              binTree[3] = new nodes﹤string﹥("D");              binTree[4] = new nodes﹤string﹥("E");              binTree[5] = new nodes﹤string﹥("F");              binTree[6] = new nodes﹤string﹥("G");              binTree[7] = new nodes﹤string﹥("H");              //使用层次遍历二叉树的思想,构造一个已知的二叉树               binTree[0].LNode = binTree[1];              binTree[0].RNode = binTree[2];              binTree[1].RNode = binTree[3];              binTree[2].LNode = binTree[4];              binTree[2].RNode = binTree[5];              binTree[3].LNode = binTree[6];              binTree[3].RNode = binTree[7];              //返回二叉树的根结点              return binTree[0];           }          #endregion           #region 中序遍历二叉树          static void MidOrder﹤T﹥(nodes﹤T﹥ rootNode)          {              if (rootNode != null)              {                  MidOrder﹤T﹥(rootNode.LNode);                  Console.WriteLine(rootNode.Data);                  MidOrder﹤T﹥(rootNode.RNode);              }          }           #endregion          后序遍历二叉树#region 后序遍历二叉树          static void AfterOrder﹤T﹥(nodes﹤T﹥ rootNode)          {              if (rootNode != null)              {                  AfterOrder﹤T﹥(rootNode.LNode);                  AfterOrder﹤T﹥(rootNode.RNode);                  Console.WriteLine(rootNode.Data);              }           }           #endregion          #region 层次遍历二叉树          static void LayerOrder﹤T﹥(nodes﹤T﹥ rootNode)          {              nodes﹤T﹥[] Nodes = new nodes﹤T﹥[20];              int front = -1;              int rear = -1;              if (rootNode != null)              {                  rear++;                  Nodes[rear] = rootNode;               }               while (front != rear)              {                  front++;                  rootNode = Nodes[front];                  Console.WriteLine(rootNode.Data);                  if (rootNode.LNode != null)                  {                      rear++;                      Nodes[rear] = rootNode.LNode;                  }                  if (rootNode.RNode != null)                  {                      rear++;                      Nodes[rear] = rootNode.RNode;                  }              }          }                    #endregion         #region 测试的主方法          static void Main(string[] args)          {              nodes﹤string﹥ rootNode = BinTree();               Console.WriteLine("先序遍历方法遍历二叉树:");              PreOrder﹤string﹥(rootNode);                           Console.WriteLine("中序遍历方法遍历二叉树:");              MidOrder﹤string﹥(rootNode);                            Console.WriteLine("后序遍历方法遍历二叉树:");              AfterOrder﹤string﹥(rootNode);                Console.WriteLine("层次遍历方法遍历二叉树:");              LayerOrder﹤string﹥(rootNode);                Console.Read();           }           #endregion      }  }

关于C#中怎么实现一个二叉树遍历算法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: C#中怎么实现一个二叉树遍历算法

本文链接: https://www.lsjlt.com/news/294865.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中怎么实现一个二叉树遍历算法
    这篇文章给大家介绍C#中怎么实现一个二叉树遍历算法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#算法实现了二叉树的定义,怎么构造一颗已知的二叉树,用几种常规的算法(先序,中序,后序,层次)进行C#二叉树遍历。希望能...
    99+
    2023-06-18
  • C++怎么实现二叉树层序遍历
    本篇内容主要讲解“C++怎么实现二叉树层序遍历”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么实现二叉树层序遍历”吧!二叉树层序遍历Given a binary tree, return...
    99+
    2023-06-20
  • C++实现二叉树非递归遍历算法详解
    目录一、二叉树的前序遍历二、二叉树的中序遍历三、二叉树的后序遍历3.1 方法一3.2 方法二一、二叉树的前序遍历 题目链接 我们可以把任何一棵树看成左路节点,左路节点和右子树。先访问...
    99+
    2023-05-17
    C++二叉树非递归遍历 C++非递归遍历 C++二叉树遍历
  • C++怎么实现二叉树的后序遍历
    这篇文章主要介绍“C++怎么实现二叉树的后序遍历”,在日常操作中,相信很多人在C++怎么实现二叉树的后序遍历问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现二叉树的后序遍历”的疑惑有所帮助!接下来...
    99+
    2023-06-20
  • C语言二叉树的遍历方法怎么实现
    这篇文章主要介绍“C语言二叉树的遍历方法怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言二叉树的遍历方法怎么实现”文章能帮助大家解决问题。     在本算法...
    99+
    2023-06-26
  • 用C++实现二叉树层序遍历
    这篇文章主要讲解了“用C++实现二叉树层序遍历”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“用C++实现二叉树层序遍历”吧!二叉树层序遍历从底部层序遍历其实还是从顶部开始遍历,只不过最后存储...
    99+
    2023-06-20
  • C++实现二叉树层序遍历的方法
    今天小编给大家分享一下C++实现二叉树层序遍历的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。二叉树层序遍历Given ...
    99+
    2023-06-19
  • C++如何实现二叉树的遍历
    本篇内容介绍了“C++如何实现二叉树的遍历”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!二叉树的遍历Q:什么是二叉树的遍历?A:二叉树的遍历...
    99+
    2023-06-30
  • C++实现LeetCode(94.二叉树的中序遍历)
    [LeetCode] 94. Binary Tree Inorder Traversal 二叉树的中序遍历 Given a binary tree, return the ...
    99+
    2024-04-02
  • JavaScript 中怎么实现一个二叉树算法
    这篇文章将为大家详细讲解有关JavaScript 中怎么实现一个二叉树算法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。二叉树和二叉搜索树介绍二叉树中的节点...
    99+
    2024-04-02
  • C++实现LeetCode(102.二叉树层序遍历)
    [LeetCode] 102. Binary Tree Level Order Traversal 二叉树层序遍历 Given a binary tree, return the&#...
    99+
    2024-04-02
  • C++超详细实现二叉树的遍历
    目录二叉树的遍历前序遍历中序遍历后序遍历层序遍历二叉树的遍历 Q:什么是二叉树的遍历? A:二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次...
    99+
    2024-04-02
  • 怎么在C++项目中遍历二叉树
    怎么在C++项目中遍历二叉树?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在讲遍历之前,我们要先创建一个树:#include <iostream>us...
    99+
    2023-06-08
  • C++实现LeetCode(107.二叉树层序遍历之二)
    [LeetCode] 107. Binary Tree Level Order Traversal II 二叉树层序遍历之二 Given the root of ...
    99+
    2024-04-02
  • JavaScript二叉树及遍历算法实例分析
    这篇“JavaScript二叉树及遍历算法实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • C++树之遍历二叉树实例详解
    在讲遍历之前,我们要先创建一个树: #include <iostream> using namespace std; typedef struct node; ty...
    99+
    2024-04-02
  • java二叉树层序遍历怎么实现
    在Java中,可以使用队列来实现二叉树的层序遍历。具体步骤如下: 首先创建一个队列,将根节点入队。 进入循环,直到队列为空为...
    99+
    2024-03-15
    java
  • C++怎么实现由先序和中序遍历二叉树
    这篇文章主要介绍了C++怎么实现由先序和中序遍历二叉树的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++怎么实现由先序和中序遍历二叉树文章都会有所收获,下面我们一起来看看吧。由先序和中序遍历建立二叉树Give...
    99+
    2023-06-19
  • C++怎么实现二叉树的字形层序遍历
    今天小编给大家分享一下C++怎么实现二叉树的字形层序遍历的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。二叉树的之字形层序遍历...
    99+
    2023-06-19
  • Go语言怎么实现二叉树遍历
    这篇文章主要讲解了“Go语言怎么实现二叉树遍历”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go语言怎么实现二叉树遍历”吧!1. 二叉树的定义二叉树需满足的条件① 本身是有序树② 树中包含的...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作