bootcamp/Java
1206 트리
깨돌
2023. 12. 22. 20:39
트리란? | 계층을 가지도록 데이터를 나열한 것 |
트리에서는 각각의 요소를 노드라고 한다. | |
노드는 데이터와 자식 노드들로 이루어져 있다. | |
트리의 용어 | |
트리의 루트 노드 | 가장 윗부분에 있는 노드 |
트리의 리프 노드 | 사장 밑부분에 있는 노드 |
특정 노드의 부모 | 특정 노드의 상위 노드 |
특정 노드의 자식 | 특정 노드의 하위 노드 |
특정 노드의 형제 | 부모가 같은 노드 |
특정 노드의 조상 | 부모의 부모의 부모의 부모의 ....... 까지 |
특정 노드의 자손 | 자식의 자식의 자식의 자식의 ....... 까지 |
특정 노드의 레벨 | 루트로부터 얼마나 떨어져 있는가 |
특정 노드의 차수 | 자식 노드의 수 |
트리의 높이 | 루트에서 제일 먼 리프까지의 거리 |
이진트리 | 최대 차수가 2인 트리 |
삼진트리 | 최대 차수가 3인 트리 |
사진트리 | 최대 차수가 4인 트리 |
이진탐색트리 | 데이터를 저장할 때 큰 걸 오른쪽에 작은 걸 왼쪽에 저장 |
이진탐색트리 구현 | root 제일 처음에 저장된 노드를 저장해놓는 변수 |
add | 숫자 하나를 전달받고 반환하는 건 없는 이름이 추가인 메소드 |
순회 | |
전위 순회 preOder | 부모, 왼쪽 자식, 오른쪽 자식 순으로 조회 |
중위 순회 inOrder (BST에서 중위순회시 데이터가 정렬된다.) | 왼쪽 자식, 부모, 오른쪽 자식 순으로 조회 |
후위 순회 postOrder (컴퓨터가 사칙연산 할 때 사용) | 왼쪽 자식, 오른쪽 자식, 부모 순으로 조회 |
삭제 | |
자식 노드가 없는 노드 삭제 | 그냥 삭제 |
자식이 하나인 노드 삭제 | 삭제하는 노드 대신에 자식 노드로 대체 |
자식이 두개인 노드 삭제 | 왼쪽을 기준으로 했을 때 삭제하는 노드 대신에 왼쪽 서브트리에서 가장 큰 노드로 대체 |
오른쪽을 기준으로 했을 때 삭제하는 노드 대신에 오른쪽 서브트리에서 가장 작은 노드로 대체 |
|