class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> res = new LinkedList<>();
if(root == null) return res;
Deque<TreeNode> st = new LinkedList<>();
st.addLast(root);
int flag = 0;
while(!st.isEmpty()){
int size = st.size();
List<Integer> arr = new LinkedList<>();
while(size > 0){
TreeNode node = st.pollFirst();
arr.add(node.val);
if(node.left != null) st.addLast(node.left);
if(node.right != null) st.addLast(node.right);
size--;
}
if(flag % 2 == 1) Collections.reverse(arr);
flag++;
res.add(arr);
}
return res;
}
}
不要对入队列的节点进行翻转,因为翻转后子节点也全部翻转了,直接对arr翻转即可。