层序遍历
什么是层序遍历
层序遍历就是从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。例如这样一个二叉树:[3,9,20,null,null,15,7]返回结果为:
代码实现:
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot){ ArrayList<ArrayList<Integer>> res = new ArrayList<>(); if (pRoot == null) { return res; } Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot);//先存入根结点,即从根结点开始遍历 while (!queue.isEmpty()) { ArrayList<Integer> arrayList = new ArrayList<>();//用来存放每一层遍历到的结点 int n = queue.size();//记录 queue 的大小是为了分层 for (int i = 0; i < n; i++) { TreeNode node = queue.poll();//将 queue 中所有的结点取出并删除 arrayList.add(node.val);//将 queue 中取出的结点放入 arrayList 中,arrayList中只存放了当前这层的所有结点,同时也将每一层分开输出 if (node.left != null) {//将下一层的结点又放入进 queue 中 queue.add(node.left); } if (node.right != null) { queue.add(node.right); } } res.add(arrayList);//将每一层遍历到的所有结点作为一个整体放入最后要输出的 res 中 } return res; }