描述
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
数据范围:0≤n≤1500,树上每个节点的val满足∣val∣<=100
要求:空间复杂度:O(n),时间复杂度:O(n)
思考过程:利用BFS进行层序遍历二叉树(利用队列元素),而后输出。
public class Solution {
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
LinkedList<TreeNode> list=new LinkedList<>();
ArrayList<ArrayList<Integer>> ary=new ArrayList<>();
list.add(pRoot);
TreeNode node;
boolean res=false;
while(!list.isEmpty())
{
ArrayList<Integer> temp=new ArrayList<>();
int size =list.size();
for(int i=0;i<size;i++)
{
node=list.poll();
if(node==null) continue;
if(res)
{
temp.add(node.val);
}
else
{
temp.add(0,node.val);
}
list.offer(node.right);
list.offer(node.left);
}
if(temp.size()!=0) ary.add(temp);
res=!res;
}
return ary;
}
}