[BOJ][C#] 1991 트리 순회

LimJaeJun·2023년 9월 16일
0

PS/BOJ

목록 보기
27/108

📕 문제

📌 링크

📗 접근 방식

Node 클래스는 이진 트리의 노드를 나타내며, 노드의 왼쪽 자식과 오른쪽 자식을 저장하였다.

BinaryTree 클래스에서
전위 순회, 중위 순회, 후위 순회를 수행하는 세 가지 메서드를 호출할 수 있게 하였다.

📘 코드

namespace BOJ
{
    class Node
    {
        public char Left;
        public char Right;

        public Node(char left, char right)
        {
            Left = left;
            Right = right;
        }
    }

    class BinaryTree
    {
        static public void PreOrder(List<Node> list, char root)
        {
            // 근 - 좌 - 우
            if(root == '.') return;

            Console.Write(root);
            PreOrder(list, list[root - 'A'].Left);
            PreOrder(list, list[root - 'A'].Right);
        }

        static public void InOrder(List<Node> list, char root)
        {
            // 좌 - 근 - 우
            if(root == '.') return;

            InOrder(list, list[root - 'A'].Left);
            Console.Write(root);
            InOrder(list, list[root - 'A'].Right);
        }

        static public void PostOrder(List<Node> list, char root)
        {
            // 좌 - 우 - 근
            if(root == '.') return;

            PostOrder(list, list[root - 'A'].Left);
            PostOrder(list, list[root - 'A'].Right);
            Console.Write(root);
        }
    }

    class No_1991
    {
        const int MAX = 26;

        static List<Node> nodes = new List<Node>(MAX);

        static void Main()
        {
            int n = int.Parse(Console.ReadLine());

            for(int i = 0 ; i < 26 ; i++)
            {
                nodes.Add(new Node('.', '.'));
            }

            for(int i = 0 ; i < n ; i++)
            {
                string input = Console.ReadLine();
                char root = input[0];
                char left = input[2];
                char right = input[4];

                nodes[root - 'A'] = new Node(left, right);
            }

            BinaryTree.PreOrder(nodes, 'A');
            Console.WriteLine();

            BinaryTree.InOrder(nodes, 'A');
            Console.WriteLine();

            BinaryTree.PostOrder(nodes, 'A');
        }
    }
}


📙 오답노트

📒 알고리즘 분류

  • 트리
  • 재귀
profile
Dreams Come True

0개의 댓글

관련 채용 정보