广度优先
蛋卷在月球烤面包
这个作者很懒,什么都没留下…
展开
-
岛屿题目合集
力扣200 岛屿数量方法一:DFS 方法二:BFS注意bfs方法出现过的问题:超时之前写的代码:这样写导致在bfs算法里将每个坐标都访问了一遍,造成时间过长,但其实grid[i][j]='0'的话就不需要再访问了,而grid[i][j]周围的'1'会经过其它'1'上下左右遍历到。 修改后: 力扣695 岛屿的最大面积...原创 2022-04-10 22:13:30 · 287 阅读 · 0 评论 -
力扣662 二叉树最大宽度
思路: 一开始考虑用BFS,但是题目要求null也算在宽度之内,但如果node.left为空是无法入队的,所以就改变思路,将每个结点都对应一个坐标,利用规律根结点下标i,左孩子为2*i,右孩子为2*i+1。 public int widthOfBinaryTree(TreeNode root) { int res=0; Queue<TreeNode> queue=new LinkedList<>(); queue.add(root原创 2022-03-15 20:08:53 · 510 阅读 · 0 评论 -
力扣958 二叉树的完全性检验
思路:层次遍历整个二叉树,完全二叉树应该是连续的结点,而如果前一个结点为空,也就是不连续,就说明不是完全二叉树,设置结点pre记录上一个结点。 public boolean isCompleteTree(TreeNode root){ Queue<TreeNode> queue=new LinkedList<>(); queue.add(root); TreeNode pre=root; while(!queue.i原创 2022-03-15 18:00:13 · 744 阅读 · 0 评论 -
力扣199 二叉树的右视图
方法一:BFS public List<Integer> rightSideView(TreeNode root) { List<Integer> list=new ArrayList<>(); if(root==null) return list; Queue<TreeNode> queue=new LinkedList<>(); queue.add(root);原创 2022-03-15 12:13:45 · 680 阅读 · 0 评论 -
力扣22 括号生成
方法一:DFS public List<String> generateParenthesis(int n) { List<String> list=new LinkedList<>(); if(n==0) return list; dfs("",0,0,n,list); return list; } public void dfs(..原创 2022-02-20 17:52:49 · 165 阅读 · 0 评论