티스토리 뷰

컴퓨터공학/Problem Solving

백준 2250

_Bibidi 2021. 1. 18. 15:14
 

2250번: 트리의 높이와 너비

첫째 줄에 노드의 개수를 나타내는 정수 N(1 ≤ N ≤ 10,000)이 주어진다. 다음 N개의 줄에는 각 줄마다 노드 번호와 해당 노드의 왼쪽 자식 노드와 오른쪽 자식 노드의 번호가 순서대로 주어진다.

www.acmicpc.net

 

1. 각 노드의 열은 왼쪽에 있는 노드들의 개수 + 1이다. 왼쪽 서브 트리에 속하는 노드의 개수와 왼쪽에 있지만 서브 트리에 속하지 않는 노드를 잘 파악해야 한다. 왼쪽 서브트리의 개수는 재귀를 이용하여 구하고 그 외의 노드는 따로 매개변수를 이용하여 전달하여야 한다.

 

2. 각 깊이의 가장 왼쪽 열과 가장 오른쪽 열을 파악하면 각 깊이의 최대 너비를 알 수 있다. 노드를 방문할 때마다 업데이트 해주고 마지막에 최대 너비와 그 깊이를 구하면 된다.

 

  문제를 풀긴 풀었는데 1번 부분 논리를 좀 더 깔금하게 정리할 수 없나 고민 중이다. 왼쪽에 있지만 왼쪽 서브트리에 없는 노드들을 재귀적으로 파악할 방법이 있으면 깔끔할 텐데.

 

- Source code link

github.com/Bibidi/Algorithms/blob/master/boj/boj%202250.cpp

'컴퓨터공학 > Problem Solving' 카테고리의 다른 글

백준 1949  (0) 2021.01.18
백준 4256  (0) 2021.01.18
백준 16437  (0) 2021.01.18
백준 4803  (0) 2021.01.17
백준 11997  (0) 2021.01.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함