
宽度优先搜索
zkp~
这个作者很懒,什么都没留下…
展开
-
199. 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释:1 <—/ \2 3 <—\ \5 4 <—思路:本题目的是找每层的最有个节点所以采用宽度优先遍历的到每层的队列将最后一个元素加入队列代码:class Solution: def rightSi原创 2020-07-22 17:52:52 · 106 阅读 · 0 评论 -
117. 填充每个节点的下一个右侧节点指针 II
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。示例:输入:root = [1,2,3,4,5,null,7]输出:[1原创 2020-07-22 17:18:53 · 103 阅读 · 0 评论 -
单词接龙
给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则:每次转换只能改变一个字母。转换过程中的中间单词必须是字典中的单词。说明:如果不存在这样的转换序列,返回 0。所有单词具有相同的长度。所有单词只由小写字母组成。字典中不存在重复的单词。你可以假设 beginWord 和 endWord 是非空的,且二者不相同。示例 1:输入:beginWord = “hit”,endWord = “原创 2020-07-07 18:53:50 · 203 阅读 · 0 评论 -
力扣 103. 二叉树的锯齿形层次遍历
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回锯齿形层次遍历如下:[[3],[20,9],[15,7]]思路:逐层遍历,所以优先选择BFS(宽度优先)如果正常顺序(统一从左到右)的话,可以先看这个二叉树的层序遍历锯齿遍历的话,解题思路如下:1.我们不改变进队列的顺序,下层一直按从左到右进队。2.原创 2020-07-03 18:51:57 · 241 阅读 · 1 评论 -
力扣 二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[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 评论