/* 请实现一个函数按照之字形打印二叉树 即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 */ import java.awt.List; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> ret = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); boolean rev = false; while(!queue.isEmpty()) { ArrayList<Integer> list = new ArrayList<>(); int cnt = queue.size(); while(cnt-->0) { TreeNode t = queue.poll(); if(t==null) continue; list.add(t.val); queue.add(t.left); queue.add(t.right); } if(rev) Collections.reverse(list); rev=!rev; if(list.size()!=0) ret.add(list); } return ret; } }