// 题目描述// 请实现一个函数按照之字形打印二叉树,// 即第一行按照从左到右的顺序打印,// 第二层按照从右至左的顺序打印,// 第三行按照从左到右的顺序打印,// 其他行以此类推。 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public ArrayList> Print(TreeNode pRoot) { ArrayList > arrayLists = new ArrayList >(); if (pRoot==null){ return arrayLists; } Stack stack1 = new Stack (); Stack stack2 = new Stack (); stack1.add(pRoot); while (!stack1.isEmpty() || !stack2.isEmpty()) { if (!stack1.isEmpty()) { ArrayList arrayList = new ArrayList (); while (!stack1.isEmpty()) { TreeNode node = stack1.pop(); arrayList.add(node.val); if (node.left != null) { stack2.add(node.left); } if (node.right != null) { stack2.add(node.right); } } arrayLists.add(arrayList); }else if (!stack2.isEmpty()) { ArrayList arrayList = new ArrayList (); while (!stack2.isEmpty()) { TreeNode node = stack2.pop(); arrayList.add(node.val); if (node.right != null) { stack1.add(node.right); } if (node.left != null) { stack1.add(node.left); } } arrayLists.add(arrayList); } } return arrayLists; }