1. 트리란?
- 트리는 난이도로 보면 자료구조 중 제일 높음
-> 트리를 유지보수하는 로직이 복잡하더라도, 참고하는 편이 좋음
- 면접에서 트리의 특정 로직을 구현하라고 할 수 있음
- 트리는 노드와 브랜치라는 것을 사용해서 사이클을 이루지 않도록 구성함
-> 트리는 굉장히 넓은 범위로 정의를 한 것임
-> 그 중에서 우리가 익혀야 하는 것은 이진 트리 구조임
- 노드가 있을 때, 최상단 노드는 루트 노드임
-> 이진 트리는 노드의 최대 브랜치가 2개
-> 이진 트리 중에서 이진 탐색 트리(Binary Search Tree)가 있음
- 이진 탐색 트리 노드의 왼쪽 노드는 작은 값이,
오른쪽 노드는 큰 값이 들어감
-> 이진 트리 중에서도 이진 탐색 트리를 많이 씀
- 최상단에 위치한 노드는 Level 0, 두번째는 Level 1, 세번째는 Level 2
- 노드의 상위 노드를 Parent Node,
노드의 하위 노드를 Child Node라고 함
-> Child Node끼리는 Sibling이라고 함
- Child Node가 하나도 없는 노드를
leaf node 혹은 terminal node라고 함
- 이진 탐색 트리가 굉장히 많이 쓰임
-> 이진 탐색 트리를 잘 알아야 함
- BST는 검색에서 O(logn)의 시간 복잡도를 가짐
2. 이진 탐색 트리 구현
public class NodeMgmt{
public class Node{
Node left;
Node right;
int value;
public Node(int data){
this.value = data;
this.left = null;
this.right = null;
}
public boolean insertNode(int data){
if(this.head == null){
this.head = new Node(data);
}else{
Node findNode = this.head;
while(true){
if(data < findNode.value){
if(findNode.left != null){
findNode = findNode.left;
}else{
findNode.left = new Node(data);
break;
}
}else{
if(findNode.right != null){
findNode = findNode.right;
}else{
findNode.right = new Node(data);
break;
}
}
return true;
}
참고
- 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online편
'자료구조' 카테고리의 다른 글
트리와 이진 탐색 트리(2) (0) | 2022.05.01 |
---|---|
해시 테이블(3) (2) | 2022.04.29 |
해시 테이블(2) (1) | 2022.04.29 |
해시 테이블(1) (0) | 2022.04.29 |
링크드 리스트(4) - 더블 링크드 리스트 II (0) | 2022.04.28 |