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');
}
}
}
트리
재귀