C#で深さ優先検索(DFS)と幅優先検索(BFS)の実装
深さ優先検索
cs
public class DFS
{
public static void Search( Node root )
{
if(root == null)
{
return;
}
Visit(root);
root.Visited = true;
if (root.Children != null)
{
foreach (var node in root.Children)
{
if(!node.Visited)
{
Search(node);
}
}
}
}
private static void Visit(Node root)
{
// nop
}
}
public class Node
{
public bool Visited { get; set; }
public Node[] Children { get; set; }
}
幅優先検索
cs
public static void Search( Node root )
{
var queue = new Queue<Node>();
root.Visited = true;
Visit(root);
queue.Enqueue(root);
while(queue.Count != 0)
{
var current_node = queue.Dequeue();
if (current_node.Children != null)
{
foreach (var node in current_node.Children)
{
if(!node.Visited)
{
Visit(node);
node.Visited = true;
queue.Enqueue(node);
}
}
}
}
}
private static void Visit(Node root)
{
// nop
}
cs
public class DFS
{
public static void Search( Node root )
{
if(root == null)
{
return;
}
Visit(root);
root.Visited = true;
if (root.Children != null)
{
foreach (var node in root.Children)
{
if(!node.Visited)
{
Search(node);
}
}
}
}
private static void Visit(Node root)
{
// nop
}
}
public class Node
{
public bool Visited { get; set; }
public Node[] Children { get; set; }
}
cs
public static void Search( Node root )
{
var queue = new Queue<Node>();
root.Visited = true;
Visit(root);
queue.Enqueue(root);
while(queue.Count != 0)
{
var current_node = queue.Dequeue();
if (current_node.Children != null)
{
foreach (var node in current_node.Children)
{
if(!node.Visited)
{
Visit(node);
node.Visited = true;
queue.Enqueue(node);
}
}
}
}
}
private static void Visit(Node root)
{
// nop
}
GitHubにもあげてあります。
https://github.com/Koki-Shimizu/DFS
Author And Source
この問題について(C#で深さ優先検索(DFS)と幅優先検索(BFS)の実装), 我々は、より多くの情報をここで見つけました https://qiita.com/Koki_jp/items/3b77d96482c6c778b8ed著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .