package com.interview.books.leetcodeoj;
import com.interview.leetcode.utils.TreeNode;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
/**
* Created_By: stefanie
* Date: 14-12-26
* Time: 下午2:27
*/
public class LOJ103_BinaryTreeZigZagLevelOrderTraverse {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> levels = new ArrayList();
Queue<TreeNode> queue = new LinkedList();
if(root != null) queue.offer(root);
boolean isEven = true;
while(!queue.isEmpty()){
int levelSize = queue.size();
List<Integer> current = new ArrayList();
for(int i = 0; i < levelSize; i++){
TreeNode node = queue.poll();
if(isEven) current.add(node.val);
else current.add(0, node.val);
if(node.left != null) queue.offer(node.left);
if(node.right != null) queue.offer(node.right);
}
levels.add(current);
isEven = !isEven;
}
return levels;
}
}