BFS一周总结

来源:互联网 发布:太空望远镜软件 编辑:程序博客网 时间:2024/06/05 20:03

130. Surrounded Regions

542. 01 Matrix

515. Find Largest Value in Each Tree Row

513. Find Bottom Left Tree Value

101. Symmetric Tree

107. Binary Tree Level Order Traversal II

前两道是矩阵遍历,后四道是树的遍历。

先说树的遍历。树的广度优先遍历基本上就是两个套路,一种是用队列存储,pop出头结点并做处理的同时将两个孩子节点(如果存在的话)入队,达到一个广度优先遍历的效果。这里需要注意的是很多题需要在遍历的时候对遍历的层数(深度)有所考虑。例如find largest value in each tree row就是寻找每行的最大值,这个时候的做法一般是在循环开始的时候取len =队列的长度(即本层的长度),然后只对前len个节点进行操作,相当于把本层节点遍历完毕。之后再进入下一层while循环。

另一种方法是利用DFS做BFS。这种方法一般是在深度优先遍历的时候携带深度信息,如果深度信息匹配的话进行相应的操作。

再下来是矩阵遍历。矩阵遍历一般的过程是先找到符合条件的需要展开遍历的点,然后调动遍历函数,遍历函数一开始需要先判断该节点是否符合处理要求,不符合则返回。如果符合的话就对该节点进行处理并且向四个方向继续展开遍历。需要注意的点是边界情况,不要越界。

0 0
原创粉丝点击