전위 순회는 루트가 맨 앞에, 후위 순회는 루트가 맨 뒤에 있다는 점을 이용해 풀었다. 예제 입력을 보자 50 - 루트302452845 - 여기까지 루트의 왼쪽 서브트리98 - 루트 보다 큰 첫번째 값5260 50 의 왼쪽 서브트리 : 30 24 5 28 4550 의 오른쪽 서브트리 : 98 52 60 여기서 다시 왼쪽 오른쪽 나누면 30의 왼쪽 서브트리 : 24 5 2830의 오른쪽 서브트리 : 45 ...... 이런 식으로 루트보다 큰 값 전까지를 왼쪽 서브트리, 큰 값 부터는 오른쪽 서브트리로 나눠서 더 이상 방문할 자식 노드가 없을 때 출력해주면 된다. 1234567891011121314151617181920212223242526#include #define FOR(i,a,b) for(int i ..
노드 u에서 v로 이동하는 경우는 유일하므로 key : v, value : u 로 잡고 '키가 중복으로 들어오는 경우, 트리가 아니다.' 식으로 문제를 풀었다. 그 과정에서 조건들을 꼼꼼히 생각하지 않아 시간이 좀 걸렸다. 들어오는 간선이 하나도 없는 단 하나의 노드가 존재한다. 이를 루트(root) 노드라고 부른다.루트 노드를 제외한 모든 노드는 반드시 단 하나의 들어오는 간선이 존재한다.루트에서 다른 노드로 가는 경로는 반드시 가능하며, 유일하다. 이는 루트를 제외한 모든 노드에 성립해야 한다. 풀면서 실패했던 케이스들 1 2 2 1 0 0양방향으로 간선이 있는 경우 1 2 2 3 3 4 4 1 0 0 루트가 없으므로 트리가 아닌 경우 1 2 3 4 0 0루트가 두 개 이상인 경우 통과 코드 1234..
- Total
- Today
- Yesterday
- 운영체제
- 패스트캠퍼스
- 컴퓨터공학
- 코딩 면접
- 올인원 패키지
- #패스트캠퍼스 #프로그래밍대학생서포터즈 #올인원패키지 #컴퓨터공학 #성공하는프로그래밍공부법
- c언어
- Fast Campus
- 프로그래밍 온라인 강의
- 개발자 취업
- 자료구조
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |