import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class Test60 {
public static ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
if (pRoot == null) {
return res;
}
Queue<TreeNode> q1 = new LinkedList<>();
Queue<TreeNode> q2 = new LinkedList<>();
ArrayList<Integer> temp = new ArrayList<Integer>();
int flag = 1;
TreeNode t = null;
q1.add(pRoot);
while (!q1.isEmpty() || !q2.isEmpty()) {
if (flag % 2 != 0) {
while (!q1.isEmpty()) {
t = q1.poll();
temp.add(t.value);
if (t.left != null) {
q2.add(t.left);
}
if (t.right != null) {
q2.add(t.right);
}
}
} else {
while (!q2.isEmpty()) {
t = q2.poll();
temp.add(t.value);
if (t.left != null) {
q1.add(t.left);
}
if (t.right != null) {
q1.add(t.right);
}
}
}
res.add(new ArrayList<>(temp));
temp.clear();
flag++;
}
return res;
}
public static void main(String[] args) {
TreeNode root = new TreeNode(10);
root.left = new TreeNode(12);
root.right = new TreeNode(5);
root.right.left = new TreeNode(4);
root.right.right = new TreeNode(7);
root.left.left = new TreeNode(3);
root.left.right = new TreeNode(8);
System.out.println(Print(root));
}
}
import java.util.ArrayList;
import java.util.LinkedList;
public class T_60_PrintByLayer {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if (pRoot == null) {
return res;
}
ArrayList<Integer> temp = new ArrayList<>();
LinkedList<TreeNode> layer = new LinkedList<>();
layer.offer(pRoot);
int start = 0;
int end = 1;
while (!layer.isEmpty()) {
TreeNode node = layer.poll();
temp.add(node.val);
start++;
if (node.left != null) {
layer.add(node.left);
}
if (node.right != null) {
layer.add(node.right);
}
if (start == end) {
start = 0;
end = layer.size();
res.add(new ArrayList<>(temp));
temp.clear();
}
}
return res;
}
}