import java.util.ArrayList; import java.util.Queue; import java.util.LinkedList; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); if(pRoot == null){ return res; } //传统层序遍历 利用队列先进先出性质处理 Queue<TreeNode> q = new LinkedList<>(); q.offer(pRoot); boolean isLeft = true; while(!q.isEmpty()){ int size = q.size(); ArrayList<Integer> line = new ArrayList<Integer>(); for(int i = 0;i<size;i++){ TreeNode node = q.poll(); //这里是核心点 其他都是传统的层序遍历逻辑 if(isLeft){ line.add(node.val); } else { line.add(0,node.val); } if(node.left != null){ q.offer(node.left); } if(node.right != null){ q.offer(node.right); } } isLeft = !isLeft; res.add(line); } return res; } }