프로그래밍/자료구조&알고리즘
트리(BFS, DFS, 이진 검색 트리)
O'bin
2024. 5. 29. 22:55
트리 구조
순서 트리와 무순서 트리
- 순서 트리(ordered tree) : 형제 노드의 순서 관계 존재
- 무순서 트리(unordered tree) : 형제 노드의 순서 관계 없음
순서 트리의 검색
- 너비 우선 검색(BFS, breadth-first search)
낮은 레벨부터 왼쪽에서 오른쪽으로 검색, 한 레벨에서 검색 마치면 다음 레벨로 내려감
- 깊이 우선 검색(DFS, depth-first search)
리프에 도달할때까지 아래로 내려가면서 검색하는 것을 우선
리프에 도달해서 더 이상 검색 대상 없으면 다시 부모 노드로 돌아가 검색
DFS의 스캔 방법
- 전위 순회(preorder) : 노드 방문 -> 왼쪽 자식 -> 오른쪽 자식
- 중위 순회(inorder) : 왼쪽 자식 -> 노드 방문 -> 오른쪽 자식
- 후위 순회(postorder) : 왼쪽 자식 -> 오른쪽 자식 -> 노드 방문
이진 트리와 이진 검색 트리
이진 트리(binary tree)
노드가 왼쪽 자식과 오른쪽 자식만을 갖는 트리(자식 없거나 한쪽만 있어도 됨)
이진 검색 트리(binary search tree)
이진 검색 트리 조건
- 왼쪽 서브트리 노드의 키값은 자신의 노드 키값보다 작다
- 오른쪽 서브트리 노드의 키값은 자신의 노드 키값보다 크다
=> 키값 같은 노드 복수로 존재 x
이진 검색 시간복잡도 : O(log n) n = 배열의 길이