代码改变世界

深搜与广搜

2016-07-19 21:30  shuaihanhungry  阅读(585)  评论(0编辑  收藏  举报

深搜

输入:如果是递归数据结构,如二叉树、单链表、集合,一般可以使用深搜,如果是非递归数据结构,如一维数组、二维数组、字符串、图,则使用深搜的概率要小一些。

输出:一定是要走到最深(如叶子结点)才能得到一个解。一般有三种情况:求可行解的个数,求一个可行解,求所有可行解。

求解:求可行解个数,如:52. N-Queens II;求所有可行解,如:51. N-Queens131. Palindrome Partitioning

广搜

输入:一般是树或图,不像深搜的输入需要有递归特征。

输出:求最短。一般有三种情况:求最短路的长度,求一个最短路,求所有最短路。

求解:求最短路长度,如:127. Word Ladder;求所有最短路,如126. Word Ladder II