题解 | #按之字形顺序打印二叉树#
按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0
java 使用队列解决之字形顺序打印二叉树
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Queue;
public class TwentySevenPrint {
public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
//存储输出
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
//如果为空
if(pRoot == null){
return res;
}
//创建队列
Queue<TreeNode> q = new ArrayDeque<>();
q.add(pRoot);
//层数,决定从左到右还是从右到左
int level = 0;
while (!q.isEmpty()){
//记录二叉树的某一行
ArrayList<Integer> row = new ArrayList<>();
//序列长度
int n = q.size();
//遍历序列
for (int i = 0; i < n; i++) {
TreeNode cur = q.poll();
row.add(cur.val);
//如果存在左右子树,则加入队列
if(cur.left!= null){
q.add(cur.left);
}
if(cur.right != null){
q.add(cur.right);
}
}
//层数加一
level++;
//之字形
if(level % 2 != 0){
res.add(row);
}else {
Collections.reverse(row);//反转内容
res.add(row);
}
}
return res;
}
}

荣耀工作强度 439人发布