103J. Binary Tree Zigzag Level Order Traversal
https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/
这个题还是魔改自 102 题
BFS
这个题和102差不多,但是由于情况不同,用了deque. 我们希望奇数层的情况和102题一模一样,所以调整了偶数层来适应奇数层。
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if(root == null) return ans;
Deque<TreeNode> q = new LinkedList<>();
q.addLast(root);
int depth = 1;
while(!q.isEmpty()){
int size = q.size();
List<Integer> temp = new ArrayList<>();
while(size > 0){
if(depth%2 == 0){//偶数层
TreeNode node = q.removeLast();
temp.add(node.val);
if(node.right != null){
q.addFirst(node.right);
}
if(node.left != null){
q.addFirst(node.left);
}
}else{ //奇数层
TreeNode node = q.removeFirst();
temp.add(node.val);
if(node.left != null){
q.addLast(node.left);
}
if(node.right != null){
q.addLast(node.right);
}
}
size--;
}
ans.add(temp);
depth++;
}
return ans;
}
}
Last updated
Was this helpful?