트리는 노드로 이루어진 데이터 구조이다.
노드들 사이에 부모와 자식 관계를 가진 가지가 있다.
한가지 에서 여러개의 노드 0~n개의 노드를 가질 수 있다. 각 노드는 한개 이상의 다른 노드를 가질 수 있다는 점에서 연결리스트와는 차이가 있다.
선형 구조(linked-list)에서도 보면 트리 구조에 속하므로 트리로 볼수 있다.
트리는 부모-자식 관계에서 자식 노드만 가리킬 수 있다.
아래는 트리라고 볼 수 없는 구조이다.
이런 것들은 그래프라고 볼 수 있다.
트리는 하나의 루트 노드로부터 자식노드만 가리킬 수 있으며, 루트에서 멀어지는 방향으로 연결된 노드여야 한다.
각 노드가 최대 두개의 자식
부모노드보다 작은 요소를 가진 노드는 왼쪽 자식 노드에 위치한다. 큰 요서는 오른쪽에 자식 노드에 위치한다 >> 이진타색 트리
모두 잘 정렬 되어있는 경우 O(log n)의 시간 복잡도를 가진다.
하지만 이를 보장할 수는 없다.
한쪽으로 치우쳐진 트리가 있다면 최악의 경우 O(n)의 시간 복잡도를 가진다.