103. Binary Tree Zigzag Level Order Traversal
Given a binary tree, return thezigzag level ordertraversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
思路:LinkedLIst 加add(0,x)可以加在头上。交替true和false的话order = order ? false : true
public class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> res = new ArrayList<List<Integer>>();
if (root==null){
return res;
}
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
boolean order = true;
int curL = 0;
while(!queue.isEmpty()){
List<Integer> temp = new ArrayList<Integer>();
curL = queue.size();
for (int i=0;i<curL;i++){
TreeNode peek = queue.remove();
if (order){
temp.add(peek.val);
}else{
temp.add(0,peek.val);
}
if (peek.left!=null){
queue.add(peek.left);
}
if (peek.right!=null){
queue.add(peek.right);
}
}
res.add(temp);
order = order ? false : true;
}
return res;
}
}