트리는 정점(Node)과 선분(Branch)을 이용하여 사이클을 이루지 않도록 구성한 Graph의 특수한 형태이다. 트리는 가족의 계보, 회사 조직도, 히프등을 표현하기에 적합하다. 이러한 트리는 계층적 구조로, 한 방향이 아닌 여러 방향으로 뻗어 나갈 수 있으므로 '비선형구조'에 포함된다.
트리의 표현을 위한 용어는 다음과 같다.
트리 구조는 효율적인 탐색을 위해 사용되기도 하며, 이를 위한 트리가 바로 이진탐색트리(Binary Search Tree)이다.
보통 자식 노드가 최대 두 개인 노드들로 구성된 트리를 이진 트리라고 한다. 이 중 모든 왼쪽 자식들은 루트나 부모보다 작은 값이고, 모든 오른쪽 자식들은 루트나 부모보다 큰 값인 특징을 가진 트리가 바로 이진탐색트리이다.
이러한 트리에서 특정 값을 찾기 위해 트리의 모든 노드를 한 번씩 방문하는 것을 트리 순회(traversal)라고 한다.
이진 트리의 순회 과정은 다음과 같이 나누어진다.
깊이 우선 순회 방법(Depth First Traversal)
전위 순회(Pre-order traversal): 루트 -> 왼쪽 -> 오른쪽
정위 순회(In-order traversal): 왼쪽 -> 루트 -> 오른쪽
후위 순회(Post-order traversal): 왼쪽 -> 오른쪽 -> 루트
너비 우선 순회 방법(Breadth First Traversal)
레벨 순회(Level-order traversal): 레벨 순, 동일 레벨에선 왼쪽 -> 오른쪽
참고
코딩팩토리 - 트리(Tree)구조란 무엇인가?
이진탐색트리(Binary Search Tree)
이진 트리(Binary Tree)와 트리 순회(Tree Traversal)