그래프(Graph)
: 사이클이 존재하는 그래프
개체는 노드(Node)
관계는 간선(Edge)
무방향 그래프 (Undirected Graph)
A와 B가 연결되어 있으면 B와 A도 연결되어 있다
방향 그래프 (Directed Acyclic Graphs)
간선에 방향이 존재하는 그래프
A → C 일 때, C → A 인 건 아니다
여기서 사이클 이라는 중요 개념이 등장한다
💡 사이클 : 시작 정점과 끝나는 정점이 동일한 경로
사이클이 존재하지 않는 방향 그래프는 DAG(Directed Acyclic Graphs)
트리는 사이클이 존재하지 않는 DAG 이다
가중치 그래프
간선에 가중치, 즉 비용이 추가된 그래프이다
A → B로 갈때 10 만큼의 비용이 필요하다, 라는 느낌
트리(Tree)
: 사이클이 존재하지 않는 방향 그래프, DAG
조직도 라고 생각하면 이해가 쉽다
그래프는 개체 간의 관계 를 표현한다면
트리는 개체를 계층 으로 표현한다
최상위 루트 노드가 존재하고
루트 노드를 시작으로 부모, 자식 관계가 형성된다
두 정점은 한 개의 경로를 가지고, 부모 자식으로 현결된 Top to Bottom 방식이다
트리는 사이클을 형성하면 안된다
탐색 알고리즘
- 전위 순회
- 자신 → 왼쪽 → 오른쪽
- 중위 순회
- 왼쪽 → 자신 → 오른쪽
- 후위 순회
- 왼쪽 → 오른쪽 → 자신
트리 종류
- 이진 트리
- 각 노드가 최대 두 개의 자식 노드를 가진다
- 이진 탐색 트리
- 이진 트리의 일종이다
- 왼쪽 가지에는 노드 값보다 작은 값
- 오른쪽 가지에는 노드 값보다 큰 값
- 이진 트리의 일종이다
'코딩테스트' 카테고리의 다른 글
[알고리즘] 코틀린으로 큐(Queue) 구현하기 (0) | 2023.09.17 |
---|---|
[알고리즘] 선택 정렬, 이진 탐색으로 X보다 큰 정수만 출력하기 (1) | 2023.09.07 |
[백준] Python # 11021 : A+B - 7 (0) | 2023.09.01 |