这个层序遍历要求返回每层的节点,正常的BFS从队列中弹出一个节点后就判断其有没有左子树和右子树,所以直接用BFS实现的话无法分层输出。 需要记录每层的节点数目,增加一个for循环就可以了。 /** * Definition for a binary tree node. * public class ...
分类:
编程语言 时间:
2020-07-25 23:51:28
阅读次数:
72
八数码问题(Eight):八数码问题是人工智能中的经典问题有一个3*3的棋盘,其中有0-8共9个数字,0表示空格,其他的数字可以和0交换位置。求由初始状态到达目标状态8 2 3 1 2 31 4 6 > 4 5 65 7 0 7 8 0的步数最少的解。题目描述在3×3的棋盘上,摆有八个棋子,每个棋子 ...
分类:
其他好文 时间:
2020-07-25 23:33:41
阅读次数:
76
Escape HDU - 3533 题意: 小A要从$(0,0)\(逃到\)(n,m)$,他的精力值为$d$,每秒可以向东南西北四个方向走一格,或保持原地不动。但无论他是否移动,精力值每秒都会损失1点。路上他会遇到炮塔射击。给定$k$座炮塔的射击方向、射击间隔、子弹速度、坐标。第0秒小A开始逃跑,且 ...
分类:
其他好文 时间:
2020-07-24 21:45:27
阅读次数:
63
给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1 / \ 2 3 \ 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 来源:力扣(LeetCode)链接:https: ...
分类:
其他好文 时间:
2020-07-24 15:45:50
阅读次数:
53
Eight 题意:八数码问题 思路:反向BFS+康托展开 const int maxn = 362885; const int FAC[] = { 1,1,2,6,24,120,720,5040,40320,362880,3628800 }; int cantor(int* a) {//算出全排列对 ...
分类:
其他好文 时间:
2020-07-24 09:46:19
阅读次数:
77
知识点简单总结——带花树(一般图最大匹配) 前置知识 二分图最大匹配(匈牙利算法) 一般图最大匹配 首先思考一下一般图和二分图的区别在哪里。 很明显二分图没有奇环。 那么只要能处理好奇环的结果就好。 首先像匈牙利算法一样每次选择一个点开始匹配并进行一次新的黑白染色,起点为黑色。 进行bfs,用队列处 ...
分类:
其他好文 时间:
2020-07-23 15:45:31
阅读次数:
74
##题面 在一个3×3的网格中,1~8这8个数字和一个“X”恰好不重不漏地分布在这3×3的网格中。 例如: 1 2 3 X 4 6 7 5 8 在游戏过程中,可以把“X”与其上、下、左、右四个方向之一的数字交换(如果存在)。 我们的目的是通过交换,使得网格变为如下排列(称为正确排列): 1 2 3 ...
https://codeforces.com/contest/1385 本来是练习Java的,后面三道题还是上了C++,顺便学了一遍2SAT。这次可以说是拓扑排序专场,E题用了BFS,G题用DFS,各有千秋,记录一下最后三题。 Problem E 给出一个有向图的边,两种情况:有的边已经指定了方向( ...
分类:
其他好文 时间:
2020-07-23 01:37:40
阅读次数:
61
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回锯齿形层次遍历如下: [ [3], [20,9], [15,7] ...
分类:
其他好文 时间:
2020-07-22 02:00:17
阅读次数:
76
图解 二叉树的四种遍历 LeetCode 题目中,二叉树的遍历方式是最基本,也是最重要的一类题目,我们将从「前序」、「中序」、「后序」、「层序」四种遍历方式出发,总结他们的递归和迭代解法。 题目说明 这里是 4 道相关题目: 144.二叉树的前序遍历 94. 二叉树的中序遍历 145. 二叉树的后序 ...
分类:
其他好文 时间:
2020-07-22 01:49:52
阅读次数:
113