问题:
把一个二叉树,安装从root到leaf的顺序把每一层上的node从左到右打印出来。
分析:
利用两个arraylist,一个arraylist装上一层的node, 另一个arraylist装上一层的child。如果上一层arraylist空了,两个arraylist互换。
代码:
//print the binary tree by level
public static void printByLevel(Node node) {
ArrayList<Node> list1 = new ArrayList<Node>();
ArrayList<Node> list2 = new ArrayList<Node>();
list1.add(node);
while(list1.size() != 0) {
for (int i = 0; i < list1.size(); i++) {
System.out.print(list1.get(i).value + " ");
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/beiyeqingteng/