题目:
从上往下打印出二叉树的每个节点,每一层的节点展昭从左到右的顺序打印。
就是树的广度遍历。
用队列,把树的子节点放到队列中。
public class BinaryTreeNode {
Integer value;
BinaryTreeNode left;
BinaryTreeNode right;
public BinaryTreeNode(Integer value) {
this.value = value;
}
@Override
public String toString() {
return "BinaryTreeNode [value=" + value + "]";
}
}
/**
* 从上往下打印出二叉树的每个节点,每一层的节点展昭从左到右的顺序打印。<br/>
* 即树的广度遍历
* */
public class PrintFromTopToBottom {
public void print(BinaryTreeNode root) {
if (root == null) {
return;
}
BinaryTreeNode current = root;
Queue<BinaryTreeNode> children = new LinkedList<BinaryTreeNode>();
while (current != null) {
System.out.println(current);
if (current.left != null) {
children.offer(current.left);
}
if (current.right != null) {
children.offer(current.right);
}
if (children.isEmpty()) {
break;
} else {
current = children.poll();
}
}
}
}