
BFS
文章平均质量分 70
努力努力再努力r
这个作者很懒,什么都没留下…
展开
-
(M)BFS:103. Binary Tree Zigzag Level Order Traversal
这道题意思是按照“之”字形遍历一棵树。 我的做法是dfs把每一行按照正常的顺序存下来,最后把奇数行倒置。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int原创 2017-10-18 18:39:33 · 212 阅读 · 0 评论 -
(M)BFS:310. Minimum Height Trees
求给定图中,能形成树的最矮的树。 BFS,利用无向图每个点的degree来计算。先计算每个点的degree,然后将degree为1的点放入list或者queue中进行计算,把这些点从邻接表中去除,然后计算接下来degree = 1的点。最后剩下1 - 2个点就是新的root。 class Solution { public: vector findMinHeightTrees(int原创 2017-10-18 20:59:26 · 208 阅读 · 0 评论 -
(M)BFS:130. Surrounded Regions
这道题用的是DFS。 扫面矩阵的四条边,如果有O,则用DFS遍历,将所有连着的O都变成另一个字符#。这样剩下是O的就是被X包围着的O,都应该变成X。最后把#再变回O就可以了。 class Solution { public: void solve(vector>& board) { if(board.empty() || board[0].empty() || bo原创 2017-10-18 21:34:37 · 200 阅读 · 0 评论 -
(M)BFS:542. 01 Matrix
给一个二维01数组,找出每个位置和最近的0的距离。 这道题归在DFS里,但是看了别人的答案,都是用BFS: 首先遍历一次矩阵,将值为0的点都存入queue,将值为1的点改为INT_MAX。然后开始BFS遍历,从queue中取出一个数字,遍历其周围四个点,如果越界或者周围点的值小于等于当前值,则直接跳过。因为周围点的距离更小的话,就没有更新的必要,否则将周围点的值更新为当前值加1,然后把周围原创 2017-10-16 20:27:19 · 353 阅读 · 0 评论