题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
java 使用队列解决之字形顺序打印二叉树
import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; import java.util.Queue; public class TwentySevenPrint { public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { //存储输出 ArrayList<ArrayList<Integer>> res = new ArrayList<>(); //如果为空 if(pRoot == null){ return res; } //创建队列 Queue<TreeNode> q = new ArrayDeque<>(); q.add(pRoot); //层数,决定从左到右还是从右到左 int level = 0; while (!q.isEmpty()){ //记录二叉树的某一行 ArrayList<Integer> row = new ArrayList<>(); //序列长度 int n = q.size(); //遍历序列 for (int i = 0; i < n; i++) { TreeNode cur = q.poll(); row.add(cur.val); //如果存在左右子树,则加入队列 if(cur.left!= null){ q.add(cur.left); } if(cur.right != null){ q.add(cur.right); } } //层数加一 level++; //之字形 if(level % 2 != 0){ res.add(row); }else { Collections.reverse(row);//反转内容 res.add(row); } } return res; } }