本文共 1376 字,大约阅读时间需要 4 分钟。
#import @interface Graph : NSObject @property (nonatomic, assign) NSInteger vertices; @end @implementation Graph - (void)dfs:(NSInteger)startVertex { NSInteger visited[] = "0"; // 初始化访问标记数组 visited[startVertex] = "1"; // 标记起点为已访问 (void)dfsHelper:(NSInteger)currentVertex { // 遍历当前节点的所有相邻节点 for (NSInteger i = 0; i < self.vertices; i++) { if (!visited[i]) { visited[i] = "1"; [self dfsHelper:i]; // 递归访问下一个节点 visited[i] = "0"; // 完成后标记为未访问 } } } [self dfsHelper:startVertex]; // 开始DFS遍历 @end 上述代码定义了一个Graph类,用于表示图结构。通过dfs方法可以进行DFS遍历,startVertex参数指定起点。dfsHelper是递归方法,用于深度遍历每个节点的相邻节点。
代码解析
1. 初始化数组visited,用于记录每个节点是否已经被访问过。 2. 将起点标记为已访问。 3. 在dfsHelper方法中,遍历当前节点的所有相邻节点。如果相邻节点未被访问过,则标记为已访问并递归调用dfsHelper。递归返回后,将节点标记为未访问,以便其他路径使用。 4. 最后调用dfsHelper方法,开始对起点进行DFS遍历。 以上就是Objective-C中实现深度优先搜索算法的完整代码示例。通过上述代码,可以对给定的图结构进行深度优先遍历,适用于图的搜索、连通性分析等场景。如果需要更详细的功能扩展,可以根据具体需求添加节点的存储结构和相邻关系的定义。 转载地址:http://ynnfk.baihongyu.com/