C# 프로그래밍 기초 실습 전자책

C# / .NET 알고리즘과 퀴즈
본 알고리즘 퀴즈 문제는 C#/.NET 개발자를 위한 알고리즘 인터뷰 혹은 C# 프로그래밍을 통한
문제 해결 알고리즘을 연구해 보는데 도움이 되고자 작성되었습니다.


퀴즈 질문


예상답변/설명

이진트리에서 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);
    }
}