С
Size: a a a
LV
LV
С
LV
С
class Solution {
public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
ArrayList<TreeNode> nodes = new ArrayList<>();
if (root != null) {
nodes.add(root);
}
int i = 0;
boolean leftToRight = true;
while (nodes.size() > 0) {
int size = nodes.size();
ArrayList<Integer> values = new ArrayList<>();
while (i < size) {
TreeNode node = nodes.get(i);
values.add(node.val);
if (node.left != null) {
nodes.add(node.left);
}
if (node.right != null) {
nodes.add(node.right);
}
i++;
}
if (!leftToRight) {
for (int l = 0, k = values.size() - 1; l < values.size() / 2; l++, k--) {
int b = values.get(l);
values.set(l, values.get(k));
values.set(k, b);
}
}
result.add(values);
leftToRight = !leftToRight;
if (size == nodes.size()) {
break;
}
}
return result;
}
}
LV