이진트리에서 A노드는 B,C를 B노드는 D,E를, C노드는 F,G를 가질 때, 각 레벨별로 출력하면 아래와 같이 출력된다.
A BC DEFG
이러한 출력을 위해 BFS를 이용하되, 한 레벨의 끝마다 큐에 NULL 노드를 삽입하고, 이 NULL노드를 만날 때마다 레벨의 끝을 의미하므로 자식노드들이 삽입된 큐에 다시 NULL노드를 추가한다.
public static void BFSLevelOutput(TreeNode root) { Queue<TreeNode> q = new Queue<TreeNode>(); q.Enqueue(root); q.Enqueue(null); while (q.Count > 0) { var node = q.Dequeue(); if (node == null) { Console.WriteLine(); if (q.Count > 0) q.Enqueue(null); continue; } Console.Write(node.Value); if (node.Left != null) q.Enqueue(node.Left); if (node.Right != null) q.Enqueue(node.Right); } }