解题思路: 题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。 BFS 通常借助 队列 的先入先出特性来实现。 算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [r ...
分类:
其他好文 时间:
2020-07-14 00:36:31
阅读次数:
69
BFS广度遍历代码模板 /** 广度遍历代码模板 */ public class TestBFS { public List<List<Integer>> bsf(TreeNode root) { // 如果节点为空 if (root == null) { return null; } List<L ...
分类:
其他好文 时间:
2020-07-13 18:26:06
阅读次数:
70
知识点: DP,差分,Bfs 原题面 双倍经验 P3943 星空。 将此题代码交过去可直接 AC,但 P3943 数据较弱,没有卡掉错误的背包解法。 完全背包解法错误原因 详见 题解 P3943 【星空】 - Epworth 的博客。 题意简述 给定一长度为 \(n\) 的 $0$ 串,给定 \(k ...
分类:
其他好文 时间:
2020-07-13 09:25:09
阅读次数:
65
BFS和DFS DFS遍历使用递归(隐式使用栈): void dfs(TreeNode root) { if (root == null) { return; } dfs(root.left); dfs(root.right); } BFS遍历使用队列 void bfs(TreeNode root) ...
分类:
其他好文 时间:
2020-07-12 22:04:02
阅读次数:
66
题目描述 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转换序列,返回 0。 所有单词具有相同 ...
分类:
其他好文 时间:
2020-07-12 12:22:49
阅读次数:
41
题意:给定一个序列ai,你需要通过下面两个操作让序列中的所有数相等。 1.选中某个数ai, ai = ai * 2 2.选中某个数ai, ai = ai / 2(如3 / 2 = 1) 求使全部数都相等的最小操作数。 分析:这是道BFS,需要对每个数都BFS一下,搜索出这个数所能到达的每个数,累加到 ...
分类:
其他好文 时间:
2020-07-11 10:01:10
阅读次数:
69
Given an n-ary tree, return the level order traversal of its nodes' values. Nary-Tree input serialization is represented in their level order traversa ...
分类:
其他好文 时间:
2020-07-10 11:20:42
阅读次数:
63
301. 删除无效的括号 描述: 思路:遍历。通过BFS遍历,因为BFS可以立马判断当前是否为最短修改的有效符号,之后不用再进行下一层。 303. 区域和检索 - 数组不可变 描述: 给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange() sumRange( ...
分类:
其他好文 时间:
2020-07-09 12:05:04
阅读次数:
118
最短路模型 #include<cstring> #include<iostream> #include<algorithm> using namespace std; typedef pair<int,int> PII; const int N = 110; int n,m; int g[N][N] ...
面试题 16.11【200708每日一题】 方法:纯数学 前几天二叉树做多了,这一上来差点就惯性思维直接拐到二叉树BFS上去了。因为题目中不考虑长/短板的摆放顺序,只要求返回所有可能的长度,而二叉树会涉及到如何删除重复组合的问题,所以并不适用于本题。 没了套路,自然是要回归到数学上。仔细一看才发现, ...
分类:
数据库 时间:
2020-07-09 00:48:05
阅读次数:
66