BFS广度优先遍历代码模板

BFS广度遍历代码模板

广度优先遍历用队列

/** 广度遍历代码模板 */
public class TestBFS {

  public List<List<Integer>> bsf(TreeNode root) {
      // 如果节点为空
      if (root == null) {
          return null;
      }

      List<List<Integer>> result = new ArrayList<>();

      Queue<TreeNode> queue = new LinkedList<>();
      queue.add(root);

      while (!queue.isEmpty()) {
          int size = queue.size();
          List<Integer> level = new ArrayList<>();

          for (int i = 0; i < size; i++) {

              TreeNode curNode = queue.poll();
              if (curNode == null) {
                  continue;
              }
              level.add(curNode.val);
              queue.add(curNode.left);
              queue.add(curNode.right);
          }

          if (!level.isEmpty()) {
              result.add(level);
          }

      }

      return result;
  }
}

 

posted @ 2020-07-13 17:55  gaopengpy  阅读(610)  评论(0编辑  收藏  举报