题目
输入一棵二叉树,从上往下按层打印树的每个阶段,同一层按照从左往右的顺序打印。
解法
二叉树的层序遍历有点类似于图的广度优先遍历算法(DFS)的思想。迭代方法:使用一个辅助优先级队列,出队列一个节点时,遍历它的左右孩子,然后左右孩子入队列,当优先级队列为空时,迭代完成。
DFS-BINARYTREE(BSTreeNode root): // 这里使用了二叉搜索树的节点结构,但这里可以不是二叉搜素树,只是普通的二叉树,但它们的节点结构是一样的
if root == null:
return null;
new queue is a FIFO queue;
queue.enqueue(root);
if queue != null:
BSTreeNode node = queue.dequeue();
print node.value;
if node.left != null:
queue.enqueue(node.left);
if node.right != null:
queue.enqueue(node.right);
Java中这里的queue可以使用LinkedList实现。