트리의 정의 및 용어 |
[ 트리의 정의 ]
- 아래 그림과 같이 마치 나무를 거꾸로 한 모양 같은 자료구조를 트리라고 한다.
- 트리의 여러 가지 방법으로 정의할 수 있다. 그 중 한가지는 '루트 노드와 다른 모든 노드와의 경로가 유일할 경우 그러한 구조를 트리라고 한다'라는 것이다.
[ 트리와 그래프의 차이점 ]
- 만약 루트 노드와 루트 노드가 아닌 다른 노드와의 경로가 둘 이상이거나 없는 경우가 있다면 이를 그래프(Graph)라고 한다.

[ 트리의 용어 ]
(1) 노드(node) : 이름과 관계된 정보를 담을 수 있는 객체(object)를 노드라고 한다. 왼쪽의 예에서는 A, B, C, D, E, F, G 모두 7개의 노드가 있다.
(2) 간선(edge) : 두 노드를 잇는 선을 간선이라고 한다.
(3) 루트 노드(root node) : 트리의 가장 위에 있는 노드가 루트 노드가 된다. 위의 예에서 루트는 A이다.
(4) 부모 노드(parent node) : 어떤 노드 위에 연결되어 있는 노드를 그 노드의 부모 노드라고 한다. 위의 예에서 B는 D의 부모 노드이다.
(5) 자식 노드( child node) : 어떤 노드 아래에 연결되어 있는 노드를 그 노드의 자식 노드라고 한다. 위의 예에서 E는 C의 자식 노드이다.
(6) 형제 노드( sibling node) : 같은 부모 노드를 갖는 노드들을 형제 노드라고 한다. 위의 예에서 E와 F는 형제 노드이다.
(7) 단말 노드( leaf node, terminal node, external node ) : 자식 노드가 없는 노드를 단말 노드라고 한다. 위의 예에서 D, E, G는 단말 노드이다.
(8) 내부 노드( internal node, nontorminal node) : 자식 노드가 하나 이상 있는 노드를 내부노드라고 한다. 위의 예에서 A, B, C, F는 내부 노드이다.
(9) 부트리(sub node) : 임의의 노드를 루트 노드로 했을 때 그 노드와 그 아래의 노드들은 하나의 부트리를 이룬다. 위의 예에서 C, D, F, G는 루트 노드로 하나 하나의 부트리이다.
(10) 레벨(level) : 루트 노드까지의 거리. 예를 들어 B의 레벨은 1, F의 레벨은 2이다.
(11) 높이, 깊이(height, depth) : 트리에 포함되는 노드의 레벨 중 가장 큰 값을 그 트리의 높이, 또는 깊이라고 한다.
※ 트리라는 이름은 나무를 거꾸로 한 모양에서 나왔다.
가장 위에 있는 노드를 root(뿌리) 노드,
가장 끝에 있는 노드를 leaf(잎) 노드라고 부르는 것도 비슷한 이유에서이다.
'C언어 자료구조' 카테고리의 다른 글
[비트 마스크] 비트 마스크란? - 4문제 (0) | 2022.07.02 |
---|---|
[유니온 파인드] 유니온 파인드란? - 5문제 (0) | 2021.03.08 |
[우선순위 큐 1일차] - 9문제 (0) | 2021.02.25 |
[우선순위 큐 2일차] - 9문제 (0) | 2021.02.22 |
[스택 2일차] 수식계산(후위표기식) - 5문제 (0) | 2021.02.22 |