백준 1991번: 트리순회 [JAVA]
·
개발/코딩테스트
https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 풀이 우선, tree[N][3] 배열에 입력값(뿌리 알파벳, 왼쪽 자식 알파벳, 오른쪽 자식 알파벳)을 받아주었다. 각각의 순회 함수에서는 자식이 ‘.’이 아니라면, 자식의 알파벳이 뿌리 알파벳인 tree 배열을 찾아 순회를 반복한다. 자식이 하나도 없는 경우 재귀는 종료된다. 전위 순회 : 1. 뿌리 노드 출력 → 2. 왼쪽 자식 탐색 → 3. 오른쪽 자식 탐색 순으로 재귀 함수를 작..
백준 11725번: 트리의 부모 찾기 [JAVA]
·
개발/코딩테스트
https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 노드의 연결 관계를 ArrayList에 입력한다. 인접 노드를 탐색해서 방문하지 않은 경우(자식) 기준 노드를 부모 노드로 저장하는 함수를 작성한다. 이를 루트 노드부터 시작해서 반복한다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTok..
백준 1068번: 트리 [JAVA]
·
개발/코딩테스트
https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 풀이 1 - 배열 사용 루트 노드부터 시작하여 자식을 탐색하는 재귀 함수를 작성한다. 자식이 없을 경우, 리프 노드의 개수를 늘리고 재귀를 종료한다. 지울 노드의 자식들은 같이 사라지므로 지울 노드의 방문 여부를 true로 바꿔놓으면 그 아래 자식들은 탐색하지 않을 수 있다. 주어진 입력이 자식이 아닌 부모 노드의 인덱스를 알려주기 때문에, 부모 노드의 인덱스가 -1인 노드를 루트 노드로 지..