package com.wsq.tree;
import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class ZigzagLevelOrder {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList();
boolean left2right = true;
Deque<TreeNode> stack = new LinkedList();
Queue<TreeNode> queue = new LinkedList();
stack.push(root);
while(!stack.isEmpty()){
while(!stack.isEmpty()){
queue.offer(stack.pop());
}
List<Integer> tmpList = new ArrayList();
while(!queue.isEmpty()){
TreeNode tmpNode = queue.poll();
if(tmpNode == null){
continue;
}
tmpList.add(tmpNode.val);
if(left2right){
stack.push(tmpNode.left);
stack.push(tmpNode.right);
}else{
stack.push(tmpNode.right);
stack.push(tmpNode.left);
}
}
if(tmpList.size() != 0){
ans.add(tmpList);
}
left2right = !left2right;
}
return ans;
}
}
转载请注明原文地址:https://blackberry.8miu.com/read-8899.html