一、深度优先搜索(DFS)
原理:
-
沿着分支尽可能深入,直到到达叶子节点,然后回溯探索其他分支
-
类似走迷宫时优先选择一条路走到黑,碰壁再回退
-
数据结构:栈(Stack)或递归实现
-
时间复杂度:O(V+E)(顶点数+边数)
-
// 递归实现(推荐) public void DFS(Node node, HashSet<Node> visited) { if (node == null || visited.Contains(node)) return; visited.Add(node); Console.Write(node.Value + " "); // 处理当前节点 foreach (var neighbor in node.Neighbors) { DFS(neighbor, visited); // 递归访问相邻节点 } } // 栈实现 public void DFS_Stack(Node root) { var stack = new Stack<Node>(); var visited = new HashSet<Node>(); stack.Push(root); while (stack.Count > 0) { var current = stack.Pop(); if (visited.