![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BFS
bsbcarter
这个作者很懒,什么都没留下…
展开
-
LeetCode-Maximum Depth of Binary Tree
递归方法非常简单 只要判断左右depth 取max+1就行public class Solution { public int maxDepth(TreeNode root) { if ( root == null ) return 0; int left = maxDepth(root.left); int ri原创 2015-03-08 07:23:57 · 346 阅读 · 0 评论 -
LeetCode-Binary Tree Zigzag Level Order Traversal
这个请参照level order traversal 不同的就是需要看每次从左还是右输出,维持一个bool 每一层取反就行,然后根据这个bool判断是用add(e) 还是add(0,e)public class Solution { public List> zigzagLevelOrder(TreeNode root) { Queue que = new Linked原创 2015-03-08 01:03:30 · 237 阅读 · 0 评论 -
*LeetCode-Binary Tree Level Order Traversal
首先不知道java中bfs用什么数据结构,知道用queue之后,不知道queue怎么实现。java中一般使用Queue queueA = new LinkedList();Queue queueB = new PriorityQueue();来实现queue,常用linkedlist来实现没有优先级的,即单纯的fifo.记得看queue的讲解,里面有两套function,分别原创 2015-03-07 22:49:51 · 265 阅读 · 0 评论 -
LeetCode-Binary Tree Level Order Traversal II
唯一和上一个题不同的就是要倒序输出层,从底层开始。只需要改一个小地方就是最后将每层list add到大list时候,用add(0,list),即add到第一位。public class Solution { public List> levelOrderBottom(TreeNode root) { Queue que = new LinkedList();原创 2015-03-07 23:08:32 · 296 阅读 · 0 评论 -
**LeetCode-Course Schedule
拓扑排序 假如有topo order 那么就说明无环 就可以实现拓普排序的方法就是记录一个indegree 每次把indegree为0的入queue 然后那一个出来 把从这个节点出来的edge都去掉 然后再看有没有indegree为0的但是注意这一个edge到底存不存在 就需要记录一个matrix 记录所有edge public class Solution { pub原创 2015-09-29 09:43:48 · 257 阅读 · 0 评论 -
*LeetCode-Word Ladder
bfs的思想 每次从队头拿一个词 从词的第一个字母开 vary from a to z然后判断是否和end相等 相等就返回length不等就判断这个新造的词是否在词典里 假如在就remove from dict 并且add to queue每次这个que里存在的是同一个level的 都循环完了再len++public class Solution { public原创 2015-10-06 03:00:41 · 256 阅读 · 0 评论 -
*LeetCode-Jump Game II
不是dp!!!是bfs就可以 并且不需要queue 只需要keep一个最远的boundary然后每次一层就是这一步可以到达的最远的位置 然后一层一层看能否push boundarypublic class Solution { public int jump(int[] nums) { if ( nums == null || nums.length <= 1)原创 2015-10-08 10:06:35 · 226 阅读 · 0 评论 -
LeetCode-Invert Binary Tree
tree一般就用recursion 还需要继续练习需要注意的是recursion总是和循环写混乱,并不需要loop了最开始我把if写成了whilepublic class Solution { public TreeNode invertTree(TreeNode root) { if ( root == null ) return nu原创 2015-09-14 23:18:36 · 368 阅读 · 0 评论 -
*LeetCode-Walls and Gates
看到这个题好想哭啊 fb面的这个我是想到了count island那个题 用了dfs 一开始应该是死循环了? 溢出 然后看答案是假如这个点没有更新 那从它开始的四周也就没必要再更新了 没想清楚 这样的话感觉是mn的时间复杂度public class Solution { public void wallsAndGates(int[][] rooms) { if (原创 2015-10-28 12:00:44 · 354 阅读 · 0 评论