DFS与BFS算法模板:leetcode个人笔记解析

需积分: 17 0 下载量 27 浏览量 更新于2024-11-13 收藏 143KB ZIP 举报
资源摘要信息:"leetcode中关于dfs解题思路-Personal-Notes:个人笔记" 知识点一:DFS解题思路 在leetcode中,DFS(深度优先搜索)是一种常用的算法,它的基本思路是从一个节点开始,尽可能深的搜索每一个分支,当一个分支搜索到尽头或者搜索到满足条件的节点后,回溯到上一个节点,继续搜索下一个分支。在实际应用中,DFS算法的运行时间并不一定要最快,但算法复杂度需要尽可能低,即在保证正确性的前提下,尽可能减少时间复杂度和空间复杂度。同时,算法的思路要易于理解,代码要尽可能短,每条思路所对应的代码最好要形成模板,以便于在不同的问题中复用。 知识点二:字符串操作 在DFS解题中,我们经常会遇到需要对字符串进行操作的情况。例如,在给定的笔记中,展示了字符串切片、索引等基本操作。字符串切片操作可以通过s2[-3:]和s2[5:8]这样的语句实现,而字符串索引操作则可以通过s2.index('w')实现,如果未找到字符,则返回-1。 知识点三:链表操作 链表是一种常见的数据结构,其主要操作包括翻转链表、删除节点等。在DFS解题中,链表的技巧并不多,但记忆操作顺序比较繁琐。例如,使用Dummy Node技巧和快慢指针技巧可以在链表操作中解决一些特殊问题。 知识点四:树的操作 树是DFS算法常用的数据结构,其遍历方式主要有前序、中序、后序。而二叉搜索树(BST)的特性是左子树的值小于根节点的值,右子树的值大于根节点的值。对于BST,中序遍历可以得到一个有序数组。 知识点五:栈和队列的应用 在DFS和BFS算法中,栈和队列是两种常用的辅助数据结构。在DFS算法中,栈一般用来模拟算法过程,但回溯方法更为简洁。在BFS算法中,队列则更为常见,它可以帮助我们记录遍历过程中节点的访问顺序。 知识点六:中缀表达式到后缀表达式的转换 中缀表达式到后缀表达式的转换是计算机科学中的一个经典问题。在这个转换过程中,需要考虑到运算符的优先级。当遇到一个计算符时,需要将优先级大于等于自己的运算符全部弹出,因为在后缀表达式中,它们放在前面就等于先去计算它们。在这个过程中,栈的作用是帮助我们记录和调整运算符的顺序。 以上是根据给定文件信息中关于DFS解题思路的个人笔记提炼出的知识点。这些知识点在解决leetcode上的算法问题时非常有用,尤其对于理解深度优先搜索算法、字符串和链表操作、树的遍历、栈和队列的使用以及中缀表达式与后缀表达式之间的转换等概念特别重要。