package common;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
/**
* @author : zhaoliang
* @program :newCoder
* @description : 按之字形打印二叉树
* @create : 2020/12/16 19:23
*/
public class PrintZ {
class TreeNode{
int val;
TreeNode left=null;
TreeNode right = null;
TreeNode(int x){
this.val =x;
}
}
//请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
public ArrayList<ArrayList<Integer>> PrintZ(TreeNode root){
if (root==null)return new ArrayList<>();
boolean revers = false;
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
while (!queue.isEmpty()){
int size = queue.size();
ArrayList<Integer> list = new ArrayList<>();
while (size-- >0){
TreeNode cur = queue.poll();
if (cur==null){
continue;
}
list.add(cur.val);
queue.add(cur.left);
queue.add(cur.right);
}
if (revers){
Collections.reverse(list);
}
revers =!revers;
if (list.size()!=0){
res.add(list);
}
}
return res;
}
}
12-07
1092
08-22
629
08-20
392