タイトル:各ノードのバイナリツリーの最上部からの印刷、左から右に同じ1ノードプリント注文。
例えば、入力されたバイナリツリーの場合:
8
/ \
6 10
/ \ / \
5 7 9 11
ファーストプリントアウト8,6,10,5,7,9
次のように処理を印刷することである:ルートを出力し、ノード8の次の2つのつの子ノードを印刷するために、我々は、一つの容器にノード6と二つのノード10のときに記憶された値を通過する必要があり今、コンテナ内の2つのノードがあります。必要に応じて、左から右に印刷された、我々は6の第1のノードの値を削除します。容器内に二つのデータノードのそれぞれ5,7、後の値うち6枚の印刷、。この場合、3件のデータがあり、それぞれの容器、10,5,7ノード。次に、我々は、コンテナのデータ値からノード10を除去します。ノード10に注目すると、これら二つのノードを削除するよりも、オフこの時間は、これは我々が一般的にFIFOを言う5,7の比の値、コンテナへの最初のノードであるが、そのコンテナを見ることは難しいことではありませんそれはキューでなければなりません。ノードの値は、子ノード5,7,9,11を有していないので、限り印刷として順次ことができます。
public <E> void printFromTopToBottom(BinaryTreeNode root){
if(root == null)
return;
Queue<BinaryTreeNode> queue = new LinkedList<BinaryTreeNode>();
queue.add(root);
while(!queue.isEmpty()){
BinaryTreeNode node = queue.poll();
System.out.print(node.value+",");
if(node.leftNode != null)
queue.add(node.leftNode);
if(node.rightNode != null)
queue.add(node.rightNode);
}
}