Tree
Tree 란?
트리는 연결 리스트와 유사한 데이터 구조이다. 하지만 각 노드가 선형적으로 다른 노드를 가리키는 게 아니라 각 노드가 여러 개의 노드를 가리킨다. 트리는 비선형적 데이터 구조의
한 예이다. 트리 구조는 구조의 계층적 속성을 그래프의 형태로 나타내는 방법이다.
트리 ADT(Abstract Data Type , 추상 데이터형)에서 항목의 순서는 중요하지 않지만,
만일 순서 정보가 필요하다면 연결 리스트나 스택, 큐 등과 같은 선형 데이터 구조를
사용할 수 있다.
Tree 의 용어 설명
root : 부모가 없는 노드. 트리에는 최대 한 개의 뿌리 노드가 있을 수 있다.
edge(간선) : 부모로부터 자식에게 이어지는 연결 선을 뜻한다.
leaf(잎 노드) : 자식이 없는 노드를 잎 노드라고 한다.
siblings(형제 노드) : 같은 부모를 가진 자식들을 형제 노드라고 한다.
조상(ancestor) 노드 : 특정 노드 q에 이르는 경로에 노드 p가 있으면 노드 p를 노드q의
조상 노드라고 한다.
자손(descendant) 노드 : 반대로 노드 q는 노드 p의 자손노드가 된다.
Level : 주어진 깊이의 모든 노드의 집합을 그 트리의 레벨이라고 한다. (root 는 Level 0)
노드의 깊이 : root 로부터 그 노드까지의 경로의 길이이다.
노드의 높이 : 해당 노드로부터 가장 깊은 노드까지의 경로
※ 노드가 단 한개만 존재한다면 트리의 높이는 0이다. 즉 0부터 시작한다.
노드의 크기 : 자기 자신을 포함하여 그 노드가 가진 자손의 수
이진 트리
- 각 노드가 자식이 없거나, 한개 혹은 2개의 자식을 가질 때 이진 트리라고 한다.
빈 트리 역시 유효한 이진 트리이다. 이진 트리는 root와 왼쪽 부속 트리, 오른쪽 부속 트리
라고 불리는 두 개의 분리된 이진 트리로 구성되어 있다고 볼 수 있다.
이진 트리의 종류
1. 엄격한 이진 트리
- 모든 노드가 두 개의 자식을 가지거나 자식이 없을 때 엄격한 이진트리 라고 한다.
2. 포화 이진 트리
- 모든 노드가 2개의 자식을 가지고 잎 노드가 같은 레벨에 있을 경우.
3. 완전 이진 트리
- 완전 이진 트리를 정의하기 전에, 이진 트리의 높이가 h라고 할 때, 완전 이진 트리는
뿌리부터 시작해서 트리 안의 노드 수까지의 완전한 순열을 얻는다.
탐색할 때 NULL 포인터에게도 숫자를 매겨야 한다.
모든 잎 노드가 높이 h나 h-1에 있고 순열에서 빠진 숫자가 없을 때 완전 이진 트리
라고 한다.
댓글 없음:
댓글 쓰기