트리

K-위키
옛@Helldongdae (토론)님의 2017년 7월 5일 (수) 02:32 판 (새 문서: 컴퓨터 과학에서 트리란 사이클이 없는 그래프를 말한다. 트리를 구성하는 요소에는 크게 두 가지가 있다. 첫 번째는 Node이고, 두 번째는...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

컴퓨터 과학에서 트리란 사이클이 없는 그래프를 말한다.

트리를 구성하는 요소에는 크게 두 가지가 있다.

첫 번째는 Node이고, 두 번째는 edge이다.

동그라미하고 선이라고 보면 참 편하다.

트리의 종류에는 또 크게 두 가지가 있는데, directed와 undirected 그래프가 있다.

이는 방향성이 있는 그래프와 방향성이 없는 그래프를 뜻한다.

방향성이 있다는 것은, 편도라는 것이고 방향성이 없다는 것은 왕복이라는 것이다.

생각해보면 참 편한 자료구조이다.

구현에는 두 가지 방식이 있는데 배열로 무식하게 때려박는 방식과 벡터를 사용하는 방식이 있다.

배열로 무식하게 때려박는 방식

 int tree[N][N]
 tree[1][2] = 1;

해당 코드의 둘째 줄은 1번 노드에서 2번 노드로 가는 편도 길이 존재한다는 것을 의미한다.

벡터로 스마트하게 박는 방식 이 방식은 공간을 아낄 수 있다. 위의 배열 방식은 무조건 (자료 사이즈)*N^2 바이트의 공간을 요구한다.

 vector<int> tree[N];
 tree[1].push_back(2);

해당 코드의 둘째 줄 또한 마찬가지로 1에서 2로 가는 편도 길이 존재한다는 것을 의미한다.