퀴즈 질문 |
|
|
예상답변/설명 |
이진트리에서 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);
}
}
|