深度优先搜索

✍ dations ◷ 2025-10-28 10:02:11 #深度优先搜索

深度优先搜索算法(英语:Depth-First-Search,DFS)是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。(p. 603)这种算法不会根据图的结构等信息调整执行策略

深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的拓扑排序表(p. 612),利用拓扑排序表可以方便的解决很多相关的图论问题,如无权最长路径问题等等。

因发明“深度优先搜索算法”,约翰·霍普克洛夫特与罗伯特·塔扬在1986年共同获得计算机领域的最高奖:图灵奖。

定义一个结构体来表达一个二叉树的节点的结构:

struct Node {    int self;     // 数据    Node *left;   // 左孩子    Node *right;  // 右孩子};

那么我们在搜索一个树的时候,从一个节点开始,能首先获取的是它的两个子节点。例如:

                 A           B           C      D   E          F   G                                      

A是第一个访问的,然后顺序是B和D、然后是E。然后再是C、F、G。那么我们怎么来保证这个顺序呢?

这里就应该用堆栈的结构,因为堆栈是一个后进先出(LIFO)的顺序。通过使用C++的STL,下面的程序能帮助理解:

相关

  • 环戊二烯环戊二烯(cyclopentadiene),或称茂,是五个碳的环状二烯烃,分子式为C5H6。环戊二烯室温下为无色液体,具有强烈的刺激性气味,并且通过自身狄尔斯-阿尔德反应迅速聚合生成二聚环戊二烯
  • 王阳元王阳元(1935年1月1日-),浙江宁波人,中国微电子学家,中国科学院院士,北京大学微电子学研究院院长,信息科学技术学院微电子学系主任,微米/纳米加工技术国家重点实验室主任,美国IEEE Fell
  • 纽奥良新奥尔良(英语:New Orleans,/nuː ˈɔːrlɪnz/,/nuː ˈɔːrliənz/,/nuː ɔːrˈliːnz/或/ˈnɔːrlənz/),旧译纽柯连,是位于美国路易斯安那州南部的港口城市,同时也是该州最
  • 小豆岛小豆岛(日语:小豆島/しょうどしま Shōdoshima */?)是位于日本濑户内海播磨滩的岛,面积153.30平方公里,海岸线长126公里,为日本第19大、濑户内海内第2大岛。岛上有小豆岛町、土庄
  • 相思树属相思树属(学名:),原名“金合欢属”,最早由瑞典生物学家卡尔·林奈于1773年在非洲描述。而后分子生物学研究发现本属并非单系群,占本属主体的900多种澳大利亚类群和包括模式种阿拉
  • 2008年美国羽毛球大奖赛2008年美国羽毛球大奖赛为第2008年度的美国羽毛球公开赛,是2008年世界羽联大奖赛的其中一站。本届赛事于2008年7月8日至7月12日在美国加利福尼亚州的橙县举行,并获得YONEX及橙
  • 刘起釪刘起釪(1917年3月9日-2012年10月6日),字铮皆,湖南安化人,中国历史学家、先秦经学史家,中国社会科学院荣誉学部委员。尚书学研究泰斗。刘起釪,出生于耕读世家。出世还未满周岁,父亲便
  • 费瑄费瑄(?-?),字仲玉,号复庵,江西铅山横林(今河口镇柴家村)人,祖籍湖广永兴(今湖北阳新),明朝政治人物,同进士出身。成化十一年(1475年)登乙未科进士。弘治年间担任兵部员外郎,参与平定白苗叛变。
  • 赤焰战场《赤焰战场》(英语:),是一部美国好莱坞电影动作片,于2010年10月15日首映,改编自DC漫画的一套同名漫画。电影由曾执导《空中危机》、《时间旅行者的妻子》导演罗伯特·斯文克(英语:Ro
  • 卡德尔山坐标:70°12′S 65°11′E / 70.200°S 65.183°E / -70.200; 65.183卡德尔山(英语:Mount Cardell)是南极洲的山峰,位于麦克罗伯特森地,处于布拉德利岭西北面4公里,属于查尔斯王子