public class MapNode {
public int x;
public int y;
public bool isWall;
public bool isVisited;
//其他属性...
}
public void DrawMap(MapNode[,] map, int startX, int startY) {
Queue queue = new Queue();
MapNode startNode = map[startX, startY];
startNode.isVisited = true;
queue.Enqueue(startNode);
while(queue.Count > 0) {
MapNode node = queue.Dequeue();
//绘制节点
int x = node.x;
int y = node.y;
//下面代码是分别向上下左右四个方向扩展
if(x > 0 && !map[x-1, y].isVisited && !map[x-1, y].isWall) {
map[x-1, y].isVisited = true;
queue.Enqueue(map[x-1, y]);
}
if(x < map.GetLength(0)-1 && !map[x+1, y].isVisited && !map[x+1, y].isWall) {
map[x+1, y].isVisited = true;
queue.Enqueue(map[x+1, y]);
}
if(y > 0 && !map[x, y-1].isVisited && !map[x, y-1].isWall) {
map[x, y-1].isVisited = true;
queue.Enqueue(map[x, y-1]);
}
if(y < map.GetLength(1)-1 && !map[x, y+1].isVisited && !map[x, y+1].isWall) {
map[x, y+1].isVisited = true;
queue.Enqueue(map[x, y+1]);
}
}
}
上一篇:BFS的时间复杂度是多少?
下一篇:BFS方法重复显示空指针异常。