
深度优先搜索
zkp~
这个作者很懒,什么都没留下…
展开
-
D/BFS之二叉树展开为链表
给定一个二叉树,原地将它展开为一个单链表。本题是将原树1变为先序遍历不变的只含右子树的树2所以我们要先保证先序遍历不变,将他全转到一侧,当全部的右节点都完成此操作时,便是所求。规律:将右子树接到左子树的最右子树的右子树位置将新左子树接到原右子树位置虑新的右子树的根节点,一直重复上边的过程,直到新的右子树为 None def dg(root): if not root: return if ro原创 2020-07-08 18:20:39 · 117 阅读 · 0 评论 -
力扣之路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]思路:要找出所有正确路径,我们就要遍历所有的路径,所有使原创 2020-07-08 16:15:19 · 223 阅读 · 0 评论 -
力扣 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]思路:这道题要求将树每一层的值存一个列表,所有层的列表存一个列表中所以使用BFS(广度优先),逐层遍历(同时确定遍历的层数)是可行的同时DFS(深度优先),可以使用字典记录 层数:[数值]。也是可行的1.BFS模板遍历时不用明原创 2020-07-03 17:14:55 · 268 阅读 · 0 评论 -
层数最深叶子节点的和之超简单
给你一棵二叉树,请你返回层数最深的叶子节点的和。示例:输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15提示:树中节点数目在 1 到 10^4 之间。每个节点的值在 1 到 100 之间。思路:我们只需要搜索所有的叶子结点,并把相同层数的叶子节点值加在一起最后输出层数最大的值数据:用字典:键为层数,值为数值设计:参数传递:子结点,字典,层数基例:如果是叶子结点则根据层数增加值,返回字典其它操作:无递归:深度优先,原创 2020-06-25 22:48:01 · 465 阅读 · 0 评论 -
祖父节点值为偶数的节点和
给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回 0 。示例:输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:18解释:图中红色节点的祖父节点的值为偶数,蓝色节点为这些红色节点的祖父节点。提示:树中节点的数目在 1 到 10^4 之间。每个节点的值在 1 到 100 之间。思路:本题中,我们要找的原创 2020-06-25 17:59:29 · 241 阅读 · 0 评论 -
不同路径之深度遍历模型
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11原创 2020-06-25 16:17:42 · 215 阅读 · 0 评论