首页 > 编程语言 >C#实现DFS和BFS

C#实现DFS和BFS

时间:2024-07-04 18:10:39浏览次数:20  
标签:node Node C# DFS BFS new root

以图示为例:

Node root = new Node("A",
                new Node("B",
                    new Node("C"), new Node("D")), 
                new Node("E",
                    new Node("F"), new Node("G",
                                    null, new Node("H"))));

DFS:

  public static void DFS(Node root)
  {
      Stack<Node> stack = new Stack<Node>();
      stack.Push(root);

      while (stack.Count > 0)
      {
          Node node = stack.Pop();
          Console.Write(node.Value + " ");

          if (node.Right != null)
          {
              stack.Push(node.Right);
          }

          if (node.Left != null)
          {
              stack.Push(node.Left);
          }
      }
  }

  public static void DFS_Recursion(Node root)
  {
      if (root == null)
          return;

      Console.Write(root.Value + " ");

      DFS_Recursion(root.Left);
      DFS_Recursion(root.Right);
  }

BFS:

  public static void BFS(Node root)
  {
      Queue<Node> queue = new Queue<Node>();
      queue.Enqueue(root);

      while (queue.Count > 0)
      {
          Node node = queue.Dequeue();
          Console.Write(node.Value + " ");

          if (node.Left != null)
          {
              queue.Enqueue(node.Left);
          }

          if (node.Right != null)
          {
              queue.Enqueue(node.Right);
          }
      }
  }

Main函数:

  Console.WriteLine("BFS:");
  BFS(root);

  Console.WriteLine("\nDFS:");
  DFS(root);

  Console.WriteLine("\nDFS_Recursion:");
  DFS_Recursion(root);

输出:

BFS:
A B E C D F G H
DFS:
A B C D E F G H
DFS_Recursion:
A B C D E F G H

标签:node,Node,C#,DFS,BFS,new,root
From: https://www.cnblogs.com/sanzhixiaozhu/p/18284365

相关文章

  • SpingMvc-Day02
    SpringMVC:表述层作用:1.接受前端参数[SpringMVC简化] 2.调用业务逻辑 3.响应前端数据[SpringMVC简化]SpringMVC组件: 1.DispatcherServlet:处理全部请求 2.handlerMapping:缓存handler方法和地址 3.handlerAdapter:适配器、参数和相应简化 4.ViewResovler视图解释器:查找视图页面......
  • CAD图纸加密软件哪个好用:八款顶尖CAD图纸加密软件大盘点!
     在工程设计领域,CAD图纸是设计师们的智慧结晶,承载着项目的核心技术和创新思路。然而,随着信息时代的到来,图纸的安全问题日益凸显。如何有效保护CAD图纸不被非法复制、篡改或泄露,成为了每个企业和设计师必须面对的重要课题。 今天为大家盘点八款顶尖CAD图纸加密软件,助您守......
  • 2024年华为OD机试真题- 电脑病毒感染-(C++/Java/python)-OD统一考试(C卷D卷)
     2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】   题目描述一个局域网内有很多台电脑,分别标注为0~N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。......
  • 2024年华为OD机试真题- 找数字-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】    题目描述小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n(1≤n≤1e9),小扇需要找到一个比n大的数字m,使得m和n对应的二进制中1的个数要相同,如:4对应二进制1008对应二进制1000其中1的......
  • Red Hat Enterprise Linux 8.0安装Docker
        上回书说到,已经通过VMwareWorkstationPro安装了RedHat虚拟机,现在尝试一下是否可以在虚拟机中安装docker;一、前置条件 CentOS7内核版本需>=3.10; CentOS6.5或以上内核版本需>=2.6.32;安装docker前请查看服务器系统版本以及内核版本是否符合要求;cat/etc/......
  • python @contextmanager
          在Python中,@contextmanager是一个装饰器,用于将一个生成器函数转换为一个上下文管理器。上下文管理器是一种用于管理资源的机制,通过with语句来使用。常见的例子如文件操作,在进入with代码块时获取资源(打开文件),在离开with代码块时自动释放资源(关闭......
  • web.py框架下的application.py模块 —— Python
    本文主要分析的是web.py库的application.py这个模块中的代码。总的来说,这个模块主要实现了WSGI兼容的接口,以便应用程序能够被WSGI应用服务器调用。WSGI是WebServerGatewayInterface的缩写,具体细节可以查看WSGI的WIKI页面接口的使用使用web.py自带的HTTPServer下面这个例......
  • 2024ICPC江西省赛 做+补
    虚拟参与了一下,结果一般,有一点点不尽人意。虚拟参与的讲解AProblem-A-Codeforces这个就很简单了,直接相加就可以了a,b,c=map(int,input().split())print(a+b+c)CProblem-C-Codeforces这道题需要贪心,如果所有的和相加刚刚好等于s,那么就返回n,如果不等于,那......
  • Dynamixel XL330 XL430 Robotics的低成本机械臂
    原文链接:GitHub-AlexanderKoch-Koch/low_cost_robot 该存储库包含用于构建和低成本机械臂的文件。你也可以建造第二个机械臂(引导臂)来控制另一个臂(跟随臂)。领导者的设计灵感来自GELLO项目,但建造起来更简单。这样的机械臂非常适合机器人学习,其中两只机械手臂也能折叠衣服。 ......
  • css盒子模型
    1.(内容)盒子组成盒⼦属性(Boxproperties)margin外边距border边框  padding的外边缘与margin的内边缘之间,默认值为0padding内间距 width&height内容区域宽⾼设置高度 因为父元素没有高度,所以他设置百分比时不能出现边框属性border-wi......