问题:
给定二叉树,ZigZag打印每一层的节点,如果上一层是从左到右,下一层就是从右到左。
分析:
本题和分层打印二叉树是一样的,我们只需要判断上一层的顺序,就可以判断该层的顺序。
代码:
public static void printZigZag(Node node) {
ArrayList<Node> list1 = new ArrayList<Node>();
ArrayList<Node> list2 = new ArrayList<Node>();
boolean rightToLeft = false;
list1.add(node);
while(list1.size() != 0) {
if (rightToLeft == true) {
for (int i = list1.size() - 1; i >= 0 ; i--) {
System.out.print(list1.get(i).value + " ");
}
rightToLeft = false;
} else {
for (int i = 0; i < list1.size(); i++) {
System.out.print(list1.get(i).value + " ");
}
rightToLeft = true;
}
for (int i = 0; i < list1.size(); i++) {
if (list1.get(i).leftChild != null) list2.add(list1.get(i).leftChild);
if (list1.get(i).rightChild != null) list2.add(list1.get(i).rightChild);
}
System.out.println();
list1.clear();
ArrayList<Node> temp = list1;
list1 = list2;
list2 = temp;
}
}
class Node {
Node leftChild = null;
Node rightChild = null;
String name;
Node(String name) {
this.name = name;
}
}
转载请注明出处:
http://blog.csdn.net/beiyetengqing/