Graph, Tree | 그래프, 트리
Graph, Tree | 그래프, 트리
💫 Graph | 그래프
그래프 : 정점과 간선으로 이루어진 자료구조
각 원소를 정점(Vertex) 또는 노드(Node : 마디)라고 부르고, 간선(Edge)은 두 정점을 연결하는 선이다.
💫 Tree | 트리
무방향이면서 사이클이 없는 연결 그래프 (Undirected Acyclic Connected Graph)
각 노드가 서로 부모-자식 관계로 연결된다.
- 부모-자식 관계
- 부모(Parent) : 자식을 가지는 노드
- 자식(Child) : 부모를 가지는 노드
- 루트(Root : 뿌리) 노드 : 트리의 최상위 노드
리프(Leaf : 잎), 단말(Terminal) 노드 : 자식이 없는 말단 노드
서브트리(Subtree) : 트리의 일부분, 어떤 한 정점에 대해 그 정점과 그 정점의 자손들로 이루어진 트리
- 높이/레벨(Height/Level) : 루트에서 해당 노드까지의 거리
- 노드가 1개만 있을 때의 높이를 1로 두느냐 0으로 두느냐에 따라 높이가 달라질 수 있음
🫧 다른 말로 (성질)
- 연결 그래프이면서 임의의 간선을 제거하면 연결 그래프가 아니면 되는 그래프
- ⭐ 임의의 두 점을 연결하는 simple path(정점이 중복해서 나오지 않는 경로)가 유일한 그래프
- ⭐ V개의 정점을 가지고 V-1개의 간선을 가지는 연결 그래프
- 사이클이 없는 연결 그래프이면서 임의의 간선을 추가하면 사이클이 생기는 그래프
- V개의 정점을 가지고 V-1개의 간선은 가지는 Anyclic(=사이클이 없는) 그래프
🫧 임의의 노드를 루트로 만들 수 있다
트리를 구슬과 실로 연결된 모양이라고 생각할 때,
아무 구슬을 잡고 위로 올려도 그 모양은 여전히 트리가 된다.
단, 루트가 달라지면 각 노드의 부모가 달라진다. (부모-자식 관계가 달라진다.)
🫧 Binary Search Tree
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.