TIL 26일차-2

HyeRyun CHOI·2021년 8월 1일
0

Bootcamp TIL

목록 보기
24/29

자료구조
Tree : 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조

Tree는 비선형 구조, 계층적으로 표현되고 아래로만 뻗어나가기 때문에 사이클이 없음

용어정리
• 노드(Node) : 트리 구조를 이루는 모든 개별 테이터
• 루트(Root) : 트리 구조의 시작점이 되는 노드
• 부모 노드(Parent node) : 두 노드가 상하 관계로 연결되어 있을 때 상대적으로 루트에서 가까운 노드
• 자식 노드(Child node) : 두 노드가 상하 관계로 연결되어 있을 떄 상대적으로 루트에서 먼 노드
• 리프(Leaf) : 트리 구조의 끝지점이고, 자식 노드가 없는 노드

깊이(Depth)
트리 구조에서는 루트로부터 하위 계층의 특정 노드까지의 깊이를 표현할 수 있음
루트 A의 depth는 0, B,C의 depth는 1

레벨(Level)
트리 구조에서 같은 깊이를 가지고 있는 노드를 묶어서 레벨로 표현 가능
루트 A의 level은 1, B,C의 level은 2
같은 레벨에 나란히 있는 노드를 형제노드라 부름

높이(Height)
트리 구조에서 리프 노드를 기준으로 루트까지의 높이를 표현할 수 있음
각 리프의 높이를 0, B와 C의 높이는 2

서브 트리(Sub tree)
트리 구조에서 루트에서 뻗어 나오는 큰 트리의 내부에 트리 구조를 갖춘 작은 트리

트리의 실사용 예제 : 파일 탐색기

Binary Search Tree

이진 트리 종류영어 표기설명
정 이진 트리Full binary tree각 노드가 0개 혹은 2개의 자식노드를 가짐
포화 이진 트리Perfect binary tree정 이진 트리이면서 완전 이진 트리인 경우,
노드의 레벨이 동일, 모든 레벨이 가득 채워져있음
완전 이진 트리Complete binary tree마지막 레벨을 제외한 노드가 가득차 있어야 하고,
마지막 레벨의 노드는 전부 차 있지 않아도 되지만 왼쪽이 채워져야 함

Tree traversal(트리 순회)
특정 목적을 위해 트리의 노드를 한번씩 방문하는 것, 트리 구조는 계층적 구조라는 특징을 가지기 때문에 모든 노드를 순회하는 방법엔 크게 3가지가 있음

  1. 전위 순회 : 가장 먼저 방문할 노드는 루트, 루트에서 시작해 왼쪽의 노드들을 순차적으로 둘러본 뒤, 왼쪽 노드의 탐색이 끝나면 오른쪽 노드를 탐색함

  2. 중위 순회 : 제일 왼쪽 끝에 있는 노드부터 순회, 루트를 기준으로 왼쪽에 있는 노드의 순회가 끝나면 루트를 거쳐 오른쪽에 있는 노드로 이동하여 마저 탐색

  3. 후위 순회 : 루트를 가장 마지막에 순회, 제일 왼쪽 끝에 있는 노드부터 순회하기 시작, 루트를 거치지 않고 오른쪽으로 이동해 순회한 뒤, 제일 마지막에 루트를 방문

BFS / DFS
그래프의 탐색은 하나의 정점에서 시작하여 그래프의 모든 정점들을 한번씩 방문(탐색)하는 것이 목적
그래프를 탐색하는 방법에도 여러가지가 있지만 가장 대표적인 두가지 방법은 BFS, DFS

BFS(Breadth-First Search) : 너비를 우선적으로 탐색하는 방법, 주록 두 정점 사이의 최단 경로를 찾을 때 사용

DFS(Depth-First Search) : 깊이를 우선적으로 탐색하는 방법, 한 정점에서 시작해서 다음 경로로 넘어가기 전에 해당 경로를 완벽하게 탐색할 때 사용 (탐색시간은 오래걸리지만 모든 노드를 탐색 가능)

여담 : 자료구조 너무 어려워ㅓㅓ....

profile
(˘・ᴗ・˘)

0개의 댓글