데이터를 처리하는 여러 방법들을 정의한 자료의 집합
자료구조를 왜 사용하나?
데이터를 사용하는데 효율성을 높이기 위해
노드로 이루어진 자료 구조, 비선형 자료구조이며 계층적 관계를 표현한다.
이진트리 (Binary Tree)
각 노드가 최대 2개의 자식을 갖는 트리
--> 전위순회, 중위순회, 후위순회를 통해 탐색 가능
L -> left, V -> visit, R -> right
1. 중위순회 LVR 탐색 즉, 왼쪽부터 탐색
출력 : D B H E A F C I G
완전 이진 트리 (Complete Binary Tree)
특징
1. 마지막 레벨을 제외하고 모든 레벨이 완전히 채워져있다.
2. 마지막 레벨은 꽉 차 있지 않아도 되지만 노드가 왼쪽에서 오른쪽으로 채워져야 한다.
3. 마지막 레벨h 에서 1~2h-1 개의 노드를 가질 수 있다.
4. 배열을 사용해 효율적으로 표현 가능하다.
전 이진 트리 (Full Binary Tree)
모든 노드가 0 또는 2개의 자식 노드를 갖는 트리
포화 이진 트리 (Perfact Binary Tree)
특징
1. 모든 레벨이 노드로 꽉 차 있는 트리
2. 전 이진트리 성질을 만족한다.
3. 모든 말단 노드가 동일한 깊이 또는 레벨을 만든다.
4. 트리의 노드 개수가 정확히 2^k-1개, k는 높이
이진탐색 트리 기준
1. 각 노드에 중복되지 않는 key가 있다.
2.루트 노드의 왼쪽 서브 트리는 해당 노드의 키보다 작은 키를 갖는 노드들로 이루어져있다. 부모 > 노드
3. 루트 노드의 오른쪽 서브 트리는 해당 노드의 키보다 큰 키를 갖는 노드들로 이루어져 있다 부모 < 노드
4. 좌우 서브 트리도 모두 이진 탐색 트리여야 한다.
특징
1. 기존 이진트리보다 탐색이 빠르다.
탐색 연산. 트리의 높이가 h라면 0(h)의 시간 복잡도를 가진다.
*이진 탐색 트리의 탐색
이진 탐색 트리의 삽입
이진 탐색 트리의 삭제
1.삭제하려는 노드가 단말노드일 경우
2. 삭제하려는 노드의 서브 트리가 하나인 경우
3. 삭제하려는 노드의 서브트리가 2개인 경우
--> 2가지의 방법이 있으나 오른쪽 서브 트리의 가장 작은 자손을 해당 노드의 자리로 올리는 것을 많이 사용