트리 (Tree)란 노드들이 나무 가지처럼 연결된 비선형 계층적 자료구조이다.
트리는 다음과 같이 나무를 거꾸로 뒤집어 놓은 모양과 유사하다.
트리는 루트라는 하나의 데이터를 시작으로 여러개의 간선(Edge)로 연결된다. 각 데이터를 노드라고 하며 상위 노드를 부모 노드, 하위 노드를 자식 노드라고 부른다.
트리 내에는 다른 하위 트리가 있고 그 하위 트리 안에는 또 다른 하위 트리가 있기 때문에 재귀적 자료구조이기도하다.
컴퓨터의 direcory구조가 트리 구조의 대표적인 예가 될 수 있다. Root 폴더 아래에 여러개의 폴더가 자식 노드로 존재하고 자식 노드의 폴더에는 여러개의 파일 노드가 존재한다.
노드 (Node)
간선 (Edge)
루트 노드 (Root Node)
부모 노드 (Parent Node)
자식 노드 (Child node)
형제 노드 (Sibling node)
외부 노드(external node, outer node), 단말 노드 (terminal node), 리프 노드(leaf node)
내부 노드 (internal node, inner node), 비 단말 노드 (non-terminal node), 가지 노드 (branch node)
깊이 (depth)
높이 (height)
Level
Degree
Path
Path Length
Size
Width
Breadth
Distance
Order
[Root -> Left -> Right]
첫번째로 루트를 탐색하고 그 후에 왼쪽 노드, 오른쪽 노드로 탐색을 이어나가는 순회 방법이다. 자식 노드를 탐색할 때, 자식 노드가 서브 트리의 루트이면 그 서브 트리 내에서 다시, 루트 -> 왼쪽 노드 -> 오른쪽 노드 순서로 탐색을 이어 나간다.
[Left -> Root -> Right]
루트를 왼쪽 노드와 오른쪽 노드 중간에 탐색하는 순회 방법이다.
[Left -> Right -> Root]
왼쪽 노드와 오른쪽 노드를 탐색하고 루트를 제일 마지막에 순회하는 방법이다.
가장 상위의 레벨부터 하위 레벨까지 왼쪽 노드에서 오른쪽 노드 순서로 트리를 순회하는 방법이다.
이진 탐색 트리는