DFS
高木同学丶
此人不懒,但是他什么都不想写
展开
-
Leetcode刷题笔记——剑指 Offer 36. 二叉搜索树与双向链表【DFS+中序遍历】
题目思路显然这是一题中序遍历题,难点就是需要在中序遍历的时候处理前一个节点与当前的节点形成双向链表我们可以用一个pre指针指向前一个节点,一开始的时候这个pre是空的,当我们找到最左边的节点时,判断pre是否为空,如果为空说明这是head节点,用head记录下来,否则说明pre指向了前一个节点,可以令pre->right = curptr,curptr->left = pre形成双向链表。代码/*// Definition for a Node.class Node {pub原创 2022-03-02 11:49:08 · 210 阅读 · 0 评论 -
Leetcode刷题笔记——剑指 Offer 34. 二叉树中和为某一值的路径【DFS】
题目思路显然这是一道DFS+回溯题,在DFS中加回溯需要在递归函数中维护一个外部变量,该变量用于记录递归信息,对该变量的回溯一般放在DFS函数的尾部,在到达递归的最深处开始回溯外部变量。DFS与回溯代码模板:type function(){vector<vector<int>> res; //用于记录结果vector<int> path; // 用于记录递归信息if(正常运行的条件){ dfs(一般传入数、vector等,传入记录递归的变量,传入记录结果原创 2022-03-01 20:59:57 · 206 阅读 · 0 评论 -
Leetcode刷题笔记——617. 合并二叉树【DFS】
题目分析显然这是一道搜索算法题,本题若采用BFS需要考虑很多种情况,而采用DFS则代码比较简洁易懂。首先DFS采用递归,函数传入两个节点,优先考虑出递归的条件:若两个根节点都是空节点则直接返回空节点若两个节点中有一个节点是空节点则直接返回另一个非空节点出递归条件考虑完,开始走一遍正常流程:两个节点都非空,则new一个节点,该节点的val由这两个非空节点的val相加得到,该节点的左孩子由这两个非空节点的两个左孩子决定,右孩子同理。完成val left right之后返回创建的这个节点。代码原创 2021-09-27 21:43:29 · 75 阅读 · 0 评论