把一个二叉树,安装从root到leaf的顺序把每一层上的node从左到右打印出来。
/*
* print the binary tree by level
*/
Public void printByLevel(Node a){
// 用一个链表来存储当前一层的所有结点
LinkedList<Node> quCurrent = new LinkedList<Node>();
quCurrent.add(a);
// 用另一个链表来存储当前层所有节点的子节点
LinkedList<Node> quChild = new LinkedList<Node>();
// 分层遍历所有的节点(BFS)
while (quCurrent.size() != 0) {
Node temp = quCurrent.poll();
System.out.print(temp.toString());
if (temp.leftChild != null) {
quChild.offer(temp.leftChild);
}
if (temp.rightChild != null) {
quChild.offer(temp.rightChild);
}
// 如果本层打印完毕,换行,交换两个链表
if (quCurrent.size() == 0) {
System.out.println("");
LinkedList<Node> tempQueue = quCurrent;
quCurrent = quChild;
quChild = tempQueue;
}
}
}
class Node {
Node leftChild = null;
Node rightChild = null;
String name;
Node(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}