일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 타입스크립트
- GraphQL
- Machine Learning
- 프로그래머스
- 자바스크립트
- 스택
- RT scheduling
- 자료구조
- 이진탐색
- 포인터
- alexnet
- 코딩테스트
- 릿코드
- 알고리즘
- 연결리스트
- vue3
- C
- 웹팩
- 연결 리스트
- 컨테이너
- RxJS
- 배열
- 해시테이블
- APOLLO
- cors
- 브라우저
- 프론트엔드
- pytorch
- 프로세스
- 큐
- Today
- Total
프린세스 다이어리
[C] 이진 트리란? 이진 트리 관련 용어 정리 본문
1. 트리란
트리는 나무를 뒤집어 놓은 형태의 자료구조다. 일반적으로 트리의 최상단 노드를 루트 노드라고 하고, 루트 노드에서 가지를 이용해서 각각의 노드로 연결되며, 가장 마지막에 해당하는 원소들을 리프 노드라고 부른다.
또한 트리는 기본적으로 부모와 자식 간의 관계로 이루어져 있다. 가지로 연결된 관계에서 루트 노드에 가까운 노드를 부모 노드, 리프 노드에 가까운 노드를 자식 노드라고 한다.
트리 구조에서 길이란 출발 노드에서 목적지 노드까지 거쳐야 하는 가짓수를 의미한다. 가지를 2번 거쳐서 1번 노드에서 35번 노드까지 간다면, 길이가 2가 되는 것이다. 깊이란 루트 노드에서 특정 노드까지의 길이를 의미한다. 높이는 가장 높은 노드부터 가장 깊은 노드까지의 길이를 의미한다.
2. 이진 트리란
이진 트리(binary tree)는 최대 2개의 자식을 가질 수 있는 트리다.
포화 이진 트리(full binary tree)는 리프 노드를 제외한 모든 노드가 두 자식을 갖고 있는 트리다.
완전 이진 트리(complete binary tree)는 모든 노드들이 왼쪽 자식부터 차근차근 채워진 트리다.
높이 균형 트리(height balanced tree)는 왼쪽 자식 트리와 오른쪽 자식 트리의 높이가 1 이상 차이 나지 않는 트리다. 높이 균형이 맞지 않는 트리를 편향 트리라고 한다.
이진 트리는 많은 양의 노드를 낮은 높이에서 관리할 수 있다는 점에서 데이터 활용의 효율성이 높다. 데이터 저장, 탐색 등의 다양한 목적에서 활용 가능하다. 편향 트리 같은 경우에는 한 쪽으로 몰려서 바르지 않은 자료구조이기 때문에 높이 균형을 맞춰줘야 한다.
'C, C++' 카테고리의 다른 글
[C] 이진 트리 구현 코드 (0) | 2021.11.13 |
---|---|
[C] 퀵 정렬이란? C언어로 퀵 정렬 구현하는 코드 (0) | 2021.11.10 |
[C] 선택 정렬과 삽입 정렬 원리, C언어로 구현하기 (0) | 2021.11.06 |
자료구조 큐를 C언어 연결 리스트로 구현하기 (0) | 2021.10.25 |
incompatible pointer types assigning to 'struct Node *' from 'Node *' [-Wincompatible-pointer-types] 해결 방법 (0) | 2021.10.14 |