James
로그인
James
로그인
[자료구조] 트리(Tree)
James
·
2024년 1월 23일
팔로우
0
자료구조(Data Structure)
0
자료구조(Data Structure)
목록 보기
5/7
트리(Tree)
개념
: 트리는 노드로 이루어진 자료구조
트리는 하나의 루트 노드를 갖는다.
루트 노드는
0개 이상
의 자식 노드를 갖고 있다.
그 자식 노드 또한
0개 이상
의 자식 노드를 갖고 있고, 이는 반복적으로 정의된다.
트리 특징
그래프의 한 종류이다.
‘최소 연결 트리’
라고도 불린다.
트리는 계층 모델 이다.
사이클이
없다.
노드가 N개인 트리는 항상 N-1개의 간선(edge)을 가진다.
즉, 간선은 항상 (N(정점의 개수) - 1) 만큼을 가진다.
루트에서 어떤 노드로 가는 경로는
유일
하다.
임의의 두 노드 간의 경로도 유일하다. 즉, 두 개의 정점 사이에 반드시
1개의 경로
만을 가진다.
한 개의 루트 노드만이 존재하며 모든 자식 노드는 한 개의 부모 노드만을 가진다.
부모-자식 관계이므로 흐름은 top-bottom 아니면 bottom-top으로 이루어진다.
순회는 Pre-order, In-order 아니면 Post-order로 이루어진다. 이 3가지 모두 DFS/BFS 안에 있다.
트리는 이진 트리, 이진 탐색 트리, 균형 트리(AVL 트리, red-black 트리), 이진 힙(최대힙, 최소힙) 등이 있다.
루트 노드 위치에 따라 분류
Pre-order(전위 순회)
루트 노드 → 왼쪽 서브 트리 → 오른쪽 서브 트리
In-order(중위 순회)
왼쪽 서브 트리 → 루트 노드 트리 → 오른쪽 서브 트리
Post-order(후위 순회)
왼쪽 서브 트리 →오른쪽 서브 트리 → 루트 노드 트리
완전 이진 트리 vs 전 이진 트리 vs 포화 이진 트리
1. 완전 이진 트리 [Complete Binary Tree]
또 다른 정의는 가장 오른쪽의 잎 노드가 (아마도 모두) 제거된 포화 이진 트리다.
완전 이진 트리는 배열을 사용해 효율적으로 표현 가능하다.
트리의 모든 높이에서 노드가 꽉 차 있는 이진 트리. 즉, 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져 있다.
마지막 레벨은 꽉 차 있지 않아도 되지만 노드가
왼쪽에서 오른쪽으로 채워져야
한다.
2. 전 이진 트리[Full Binary Tree]
모든 노드가 0개 또는 2개의 자식
노드를 갖는 트리
3. 포화 이진 트리 [Perfect Binary Tree]
전 이진 트리이면서 완전 이진 트리인 경우
모든 말단 노드는 같은 높이에 있어야 하며, 마지막 단계에서 노드의 개수가 최대가 되어야 한다.
모든 내부 노드가 두 개의 자식 노드를 가진다.
모든 말단 노드가 동일한 깊이 또는 레벨을 갖는다.
노드의 개수가 정확히 2^(k-1)개여야 한다. (k:트리의 높이)
James
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper
팔로우
이전 포스트
[자료구조] 그래프(Graph)
다음 포스트
[자료구조] 힙(Heap)
0개의 댓글
댓글 작성