【题目】
给定一颗二叉树的头结点head,实现按层打印二叉树
【代码】
package zyc.binaryTree;
import java.util.LinkedList;
import java.util.Queue;
public class P132_printBT {
public static void main(String[] args) {
Node node = new Node(10);
node.left = new Node(4);
node.left.left = new Node(2);
node.left.right = new Node(5);
node.right = new Node(14);
node.right.left = new Node(11);
node.right.right = new Node(15);
print(node);
}
public static void print(Node node) {
Queue<Node> queue = new LinkedList();
queue.add(node);
Node last = node;
Node nextLast = null;
int level = 1;
System.out.print("第" + level + "层:");
while (!queue.isEmpty()) {
Node curNode = queue.poll();
System.out.print(curNode.value + " ");
if (curNode.left != null) {
queue.add(curNode.left);
nextLast = curNode.left;
}
if (curNode.right != null) {
queue.add(curNode.right);
nextLast = curNode.right;
}
if (curNode == last && !queue.isEmpty()) {
System.out.print("\n第" + (++level) + "层:");
last = nextLast;
}
}
}
//二叉树分层打印
public static class Node {
public int value;
public Node left;
public Node right;
public Node(int value) {
this.value = value;
}
}
}