一,问题介绍
给定一棵二叉树,按照层序遍历的顺序打印二叉树。但是要求,每一行打印一层数据。
二,算法分析
借助二叉树的层序遍历来实现。但是需要额外两个变量。一个变量用来保存当前层 还未打印的结点个数,另一个变量保存下一层待打印的结点个数。
二叉树层序遍历参考:http://www.cnblogs.com/hapjin/p/5409921.html
层序打印参考:
public void printTree(BinaryNode
root){
if(root == null)
return;
Queue> queue = new LinkedList<>();
int current;//当前层 还未打印的结点个数
int next;//下一层结点个数
queue.offer(root);
current = 1;
next = 0;
while(!queue.isEmpty()){
BinaryNode currentNode = queue.poll();
System.out.printf("%-4d", currentNode.element);
current--;
if(currentNode.left != null){
queue.offer(currentNode.left);
next++;
}
if(currentNode.right != null){
queue.offer(currentNode.right);
next++;
}
if(current ==0){
System.out.println();
current = next;
next = 0;
}
}
}