搜索-bfs
搜索-bfs
tzyshiwolaogongya
这个作者很懒,什么都没留下…
展开
-
leetcode662——Maximum Width of Binary Tree
题目大意:二叉树中有空节点,求它的最大宽度,每层的宽度定义为两端非空节点之间的长度,空节点也计入长度分析:BFS。队列中记录节点和节点位置的pair信息。每层计算两端点的位置差即可。代码:class Solution {public: int widthOfBinaryTree(TreeNode* root) { if (!root) return 0; queue<pair<TreeNode*, unsigned long long>原创 2020-07-30 21:53:41 · 103 阅读 · 0 评论 -
poj2251——Dungeon Master
题目大意:在三维地牢中移动可以前后左右,也可以上下楼,一共六个方向,走一步需要一分钟,问从地牢中逃出最少需要几分钟输入:(可以有几个case 以0 0 0结束输入) 地牢层数L 每层地牢的行数R 列数C(所有LRC都不超过30) 第i行的地牢情况(#表示墙 .表示空地 S表示入口 E表示出口)输出:如果可以走出则输出为Escaped i...原创 2017-11-14 21:24:51 · 170 阅读 · 0 评论 -
poj3126——Prime Path
题目大意:给出两个四位素数,每次改变只能改四位中的一位,问最少经过几次改变能将第一个数变为第二个数输入:case个数n(最多不超过100个) 第i个case的两个四位素数(不以0开头)输出:最少改变次数/impossible分析:bfs搜索 先打印素数表,再用队列进行bfs搜索代码:转载自http://blog.csdn.net/wa...原创 2017-11-15 16:16:09 · 155 阅读 · 0 评论 -
leetcode127——Word Ladder
题目大意:给出两个单词和一个词典,求两个单词的最短转换序列长度,要求每次转换只改变一个字母,且中间单词必须在词典中代码:class Solution {public: int ladderLength(string beginWord, string endWord, vector<string>& wordList) { queue<...原创 2020-02-18 12:18:01 · 82 阅读 · 0 评论 -
leetcode117——Populating Next Right Pointers in Each Node II
题目大意:填充二叉树每一个节点的下一个右侧节点指针分析:类似116,但是由于不是完美二叉树,所以考虑的情况要更多。情况一:首先要考虑leftmost指针不再单纯指向第n层最左节点,而是指向第n+1层队首节点的父亲。这样从leftmost开始遍历第n层才符合题意。情况二:连接节点不再像116那样分两种,而是直接维护当前所要填充的节点。代码:/*// Definition fo...原创 2020-02-12 12:43:41 · 171 阅读 · 0 评论 -
leetcode116——Populating Next Right Pointers in Each Node
题目大意:填充完美二叉树中每个节点的下一个右侧节点,使得每个节点的next指针指向该节点的同层右侧节点,如果右侧没有则指向NULL。(完美二叉树指所有叶子节点都在同一层,且所有父节点都有两个子节点)分析:方法一:使用队列进行广度优先遍历的空间复杂度为O(n)。方法二:不使用队列进行广度优先遍历的空间复杂度为O(1)。完美二叉树中存在两种类型的next指针:一种是两个子节点属于同一个...原创 2020-02-11 12:29:06 · 103 阅读 · 0 评论 -
leetcode111——Minimum Depth of Binary Tree
题目大意:求二叉树的最小深度,即根到最近叶节点的深度分析:dfs、bfs均可代码:自己的代码:bfs/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x...原创 2018-03-10 22:00:28 · 162 阅读 · 0 评论