페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3325

이진트리 출력하기 1s 64MB

문제

 

트리에 포함된 노드간의 연결정보가 입력될 때, 

트리 조건을 다음 규칙에 맞도록 출력하는 프로그램을 작성하시오.

 

이진트리는 다음과 같은 규칙으로 표현된다.

  1. 입력되는 트리는 항상 이진 트리임을 보장한다.
  2. 모든 노드는 알파벳 소문자를 값으로 하며, 모든 노드의 알파벳은 서로 다르다.
  3. 입력되는 트리의 루트노드는 항상 "a"다. (모든 입력에 "a"는 존재한다.)
  4. 자식이 하나일 경우는 항상 오른쪽 자식이고, 둘일 경우에는 오른쪽 자식이 사전순으로 빠른 알파벳으로 배치한다.
  5. 출력할 수 있는 문자는 "알파벳 소문자", "-", "+", "|", "." 으로 구성된다.
  6. 오른쪽 자식은 부모와 같은 행의 오른쪽에 배치된다.
  7. 왼쪽 자식은 부모보다 더 아래쪽 행에 배치된다.
  8. 깊이가 같은 모든 노드들은 모두 같은 열에 배치된다.

 

규칙이 적용된 사항에 대해서는 입력예시를 참고한다. 


입력

첫 번째 줄에 노드의 수 n이 입력된다. ( 3 <= N <= 26) 두 번째 줄부터 n-1줄에 걸쳐서 엣지가 연결하는 두 노드가 공백으로 구분되어 입력된다.

출력

규칙에 맞도록 트리의 구조를 출력한다.

예제 #1

6

a b
c b
d c
e d
d f
-a-b-c-d-e

.......+-f

예제 #2

9

a b
a c
b f
b g
c d
c e
d h
d i
-a-b-f..

.|.+-g..
.+-c-d-h
...|.+-i
...+-e..

출처

koistudy|comkiwer
로그인해야 코드를 작성할 수 있어요.