728x90
반응형
트리(Tree) 완전 이해하기
이전 글에서는 해시테이블(Hash Table)에 대해 알아봤습니다.
이번에는 계층적 구조를 표현하는 자료구조, 트리(Tree) 에 대해 자세히 정리해봅니다.
1. 트리란?
트리는 노드(Node)들이 부모-자식 관계로 연결된 비선형 자료구조입니다.
- 하나의 루트(Root) 노드에서 시작
- 부모 노드에서 여러 자식 노드로 갈라지는 구조
- 순환(Cycle)이 없는 연결 구조
2. 트리의 기본 용어
용어 설명
루트(Root) | 트리의 시작 노드 |
부모(Parent) | 다른 노드를 가리키는 노드 |
자식(Child) | 부모에게 연결된 노드 |
리프(Leaf) | 자식이 없는 노드 (끝 노드) |
깊이(Depth) | 루트부터 해당 노드까지의 거리 |
높이(Height) | 트리에서 가장 긴 경로의 길이 |
3. 트리의 종류
종류 설명
이진 트리(Binary Tree) | 모든 노드가 최대 2개의 자식을 가짐 |
이진 탐색 트리(BST) | 왼쪽은 작은 값, 오른쪽은 큰 값 정렬 |
균형 트리(AVL, Red-Black Tree) | 높이를 균형 있게 유지하는 트리 |
힙(Heap) | 우선순위 큐에 사용되는 트리 구조 |
트라이(Trie) | 문자열 검색에 특화된 트리 |
4. 이진 트리 기본 구조 예시 (C#)
노드 정의
public class Node
{
public int Value;
public Node Left;
public Node Right;
public Node(int value)
{
Value = value;
Left = null;
Right = null;
}
}
트리 생성 및 연결
Node root = new Node(10);
root.Left = new Node(5);
root.Right = new Node(15);
root.Left.Left = new Node(3);
root.Left.Right = new Node(7);
트리 순회 (중위 순회 Inorder)
void InorderTraversal(Node node)
{
if (node == null) return;
InorderTraversal(node.Left);
Console.WriteLine(node.Value);
InorderTraversal(node.Right);
}
// 사용
InorderTraversal(root);
5. 실생활 예시로 이해하기
- 트리 = 회사 조직도
- CEO(루트) 밑에 부서장(자식), 그 밑에 팀원(자식)들이 연결됨
- 트리 = 폴더 구조
- 폴더 안에 하위 폴더와 파일이 계층적으로 구성됨
6. 트리의 활용 사례
사용 예시 설명
데이터베이스 인덱싱 | B-트리 기반 인덱스 사용 |
파일 시스템 구조 | 디렉터리와 파일을 트리 형태로 저장 |
게임 AI | 트리 기반 의사결정 구조 (Decision Tree) |
이번 글에서는 트리(Tree) 의 개념, 기본 용어, 종류, C# 코드 사용법을 정리했습니다.
- 트리는 부모-자식 관계로 데이터를 계층적으로 구성
- 다양한 트리 구조가 존재 (이진 트리, 탐색 트리, 힙 등)
- 실제 파일 시스템, 데이터베이스 인덱스 등 광범위하게 사용
728x90
반응형
'개발이야기' 카테고리의 다른 글
자료구조 시리즈 10편 (2) | 2025.04.22 |
---|---|
자료구조 시리즈 9편 (0) | 2025.04.22 |
자료구조 시리즈 7편 (2) | 2025.04.22 |
자료구조 시리즈 6편 (2) | 2025.04.21 |
자료구조 시리즈 5편 (0) | 2025.04.21 |