import java.util.ArrayList;
import java.util.Queue;
import java.util.LinkedList;
/*
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
//创建一个list作为返回值
ArrayList<ArrayList<Integer>> list = new ArrayList<>();
//判断当前节点是否为空
if(pRoot == null){
return list;
}
//创建一个队列用于放每一层的节点
Queue<TreeNode> queue = new LinkedList<>();
//把当前节点放入queue
queue.add(pRoot);
//定义一个标志用于判断从左还是从右
Boolean isflage = true;
//判断
while(!queue.isEmpty()){
//定义一个list放入每一层的节点值
ArrayList<Integer> buff = new ArrayList<>();
//获取这一行的长度
int count = queue.size();
//循环这一层
for(int i=0; i<count; i++){
//取出队列的值并删除
TreeNode node = queue.poll();
//判断
if(isflage){
buff.add(node.val);
}else{
buff.add(0,node.val);
}
//左节点是否为空,不为空放入队列
if(node.left != null){
queue.add(node.left);
}
//右节点是否为空
if(node.right != null){
queue.add(node.right);
}
}
list.add(buff);
isflage = !isflage;
}
return list;
}
}
力扣算法20——JZ77 按之字形顺序打印二叉树
最新推荐文章于 2025-04-22 13:22:37 发布