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。这种方法一般是在深度优先遍历的时候携带深度信息,如果深度信息匹配的话进行相应的操作。
再下来是矩阵遍历。矩阵遍历一般的过程是先找到符合条件的需要展开遍历的点,然后调动遍历函数,遍历函数一开始需要先判断该节点是否符合处理要求,不符合则返回。如果符合的话就对该节点进行处理并且向四个方向继续展开遍历。需要注意的点是边界情况,不要越界。