按之字形顺序打印二叉树
仍然使用队列,在list中添加元素时改为使用头插和尾插法即可。
public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
if(pRoot==null) return new ArrayList<ArrayList<Integer>>();
ArrayList<ArrayList<Integer>> lists=new ArrayList<ArrayList<Integer>>();
Deque<TreeNode> queue=new LinkedList<TreeNode>();
queue.add(pRoot);
int cnt=0;
while (!queue.isEmpty()){
ArrayList<Integer> list=new ArrayList<Integer>();
int l=queue.size();
for (int i=0;i<l;i++){
TreeNode node=queue.poll();
if(node.left!=null) queue.add(node.left);
if(node.right!=null) queue.add(node.right);
if(cnt%2==0) list.add(node.val);
else {
list.add(0, node.val);
}
}
cnt++;
lists.add(new ArrayList<>(list));
}
return lists;
}