데이터를 저장하고 탐색하기에 유용한 구조
1. 인공지능(AI)
2. 자동 완성 기능
3. 데이터 베이스

간선으로 연결된 노드들은 서로 부모-자식 관계를 가진다고 표현한다. 상대적으로 위에 존재하는 노드를 부모 노드 아래에 있는 노드를 자식 노드라고 한다. 같은 부모노드를 같는 노드를 형제 노드라고 한다.
이진 트리는 배열이나 포인터로 구현 할 수 있다.
배열은 선형 자료구조이고, 노드는 계층 자료구조이다. 따라서 배열로 트리를 표현하렴면 3가지 규칙이 필요하다/
- 루트 노드는 배열 인덱스 1번에 저장한다.
- 왼쪽 자식 노드의 배열 인덱스는 부모 노드의 배열 인덱스 x2 이다.
- 오른쪽 자식 노드의 배열 인덱스는 부모 노드의 배열 인덱스 x2+1 이다.
트리를 표현한 배열은 빈 값이 존재한다. 노드들의 부모-자식 관계를 곱셈 연산하여 배열의 인덱스로 사용하기 때문에 실제 노드 갯수보다 많은 공간을 사용하기 때문에 메모리의 낭비가 존재한다. 메모리가 넉넉하다면 구현 시간을 단축하기 위해 사용하는것도 괜찮다.
전위 순회
- 현재 노드를 부모 노드로 생각했을때 부모노드 -> 왼쪽 자식 노드 -> 오른쪽 자식 노드 순서로 방문
중위 순회
- 현재 노드를 부모 노드로 생각했을때 왼쪽 자식 노드 -> 부모노드 -> 오른쪽 자식 노드 순서로 방문
후위 순회
- 현재 노드를 부모 노드로 생각했을때 왼쪽 자식 노드 -> 오른쪽 자식 노드 -> 부모노드 순서로 방문
노드는 노드의 값, 왼쪽 자식 노드와 오른쪽 자식 노드를 가진다.


이진 트리에서 가장 중요한 것은 탐색을 효율적으로 할 수 있도록 트리를 구축하는 것이다.
탐색의 방법은 아래와 같다.
- 찾으려는 값이 현재 노드의 값과 같으면 탐색을 종료하고 크면 오른쪽 노드를 탐색한다.
- 본인이 찾으려는 값이 현재 노드의 값보다 작으면 왼쪽 노드를 탐색한다.
- 값을 찾으면 종료한다. 노드가 없을 때 까지 계속 탐색했는데 값이 없으면 현재 트리에 값이 없는 것이다.