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

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


퀴즈 질문


예상답변/설명

이진 트리의 좌우 노드를 서로 교환(swap)하여 문제를 해결할 수 있다. 루트노드의 좌우 노드 포인터를 SWAP하고, 계속 하위 레벨 노드들에 대해 Recursion을 사용하여 교환할 수 있다.

void MirrorTree(TreeNode t)
{
    if (t == null || 
        (t.Left == null && t.Right == null)) 
        return;

    var temp = t.Left;
    t.Left = t.Right;
    t.Right = temp;

    MirrorTree(t.Left);
    MirrorTree(t.Right);
}