ORID22

作者: Wilbur_ | 来源:发表于2020-06-09 23:39 被阅读0次

其实刷题最重要的是要总结,就跟自己平时写日记一样,如果没有总结就没办法事半功倍的把事情做好。
BFS实际上就分那么几个步骤

  1. 把root丢到队列(queue)里面去,然后开始循环
while(!queue.isEmpty()) {
    ... //在循环里把每个队列的第一个拿出来,然后search他的孩子
  List<Integer> currentLevel = new ArrayList<>(); //需要存储就建这个,不需要就不用。
  int size = queue.size();
    for (int i = 0; i < size; i++) {
        treeNode = queue.poll();
       if (treeNode.left != null) {
          queue.offer(treeNode.left);
        }
       if (treeNode.right != null) {
          queue.offer(treeNode.right);
        }  
    }
  //for loop 之后就是当前层级已经遍历完了,如果有需要就保存到答案里
    results.add(currentLevel);
}

用这个while loop把所有的层级都遍历一遍。
如果你需要把每层保存在单独的Array里面,那就需要在while每次开始的时候建立一个新的ArrayList。

while(!queue.isEmpty()) {
    ... //在循环里把每个队列的第一个拿出来,然后search他的孩子
  List<Integer> currentLevel = new ArrayList<>(); //需要存储就建这个,不需要就不用。

最后while 结束之后return结果就可以了
要记得在一开始的时候判断一下他们给你的list是否为空(证明你想到了这种edge cases)

相关文章

  • ORID22

    其实刷题最重要的是要总结,就跟自己平时写日记一样,如果没有总结就没办法事半功倍的把事情做好。BFS实际上就分那么几...

网友评论

      本文标题:ORID22

      本文链接:https://www.haomeiwen.com/subject/fhkyzhtx.html