Day 56
题目描述
思路
锯齿形就是一层是从左向右,一层是从右向左,那么我们可以分析样例,对于第奇数层是从左向右,第偶数层是从右向左,于是可以采取一个计数器,采取链表方式,从左向右就是正常插入到链表后面,从右向左就是插入到链表前面。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>>result=new ArrayList<>();
if(root==null){
return result;
}
Queue<TreeNode>tree=new LinkedList<>();//保存树的节点
int count;
TreeNode x;
int y=0;
tree.offer(root);
while(!tree.isEmpty()){
count=tree.size();
List<Integer>res=new LinkedList<>();
for(int i=0;i<count;i++){
x=tree.poll();
if(x.left!=null) tree.offer(x.left);
if(x.right!=null) tree.offer(x.right);
if(y%2==0){
res.add(x.val);
}
else{
res.addFirst(x.val);
}
}
y++;
result.add(res);
}
return result;
}
}