题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
思路1:借助两个栈实现
思路2:在偶数行需要倒着打印,可以用list.add(0,node.val);反着插入节点值
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>(); if(pRoot==null) return result; Queue<TreeNode> queue=new LinkedList<TreeNode>(); queue.add(pRoot); int rows=1; while(!queue.isEmpty()){ ArrayList<Integer> list=new ArrayList<>(); int size=queue.size(); for(int i=0;i<size;i++){ TreeNode node=queue.poll(); if(rows%2==0) list.add(0,node.val); else list.add(node.val); if(node.left!=null) queue.offer(node.left); if(node.right!=null) queue.offer(node.right); } result.add(list); rows++; } return result; } }