자료구조 \ 알고리즘 기법

[ 자료 구조 ] 이진트리 / 이진 탐색 트리

2023. 5. 11. 13:59
목차
  1. 이진트리란 ?
  2. 이진트리 특징
  3. 이진 탐색 이란 ?
  4. 이진 탐색 트리
  5. 이진 탐색 예시 순서
  6. 트리 순회
  7.  
  8. 트리 순회 결과

이진트리 알아보기 전 Tree 기본 개념 보러가기

 

[ 자료 구조 ] Tree / Graph

Tree 알아보기 그래프의 여러 구조 중 단방향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗은 형태가 나무와 닮았다고 해서 트리 구조라고 부른다. 트리는 계층적 자료구조 / 비선

wldbseja.tistory.com


이진트리란 ?

  • 이진트리(Binary tree)는 자식 노드가 최대 두 개인 노드로 구성된 트리이다.
  • 자료의 삽입, 삭제 방법에 따라 정 이진트리, 완전 이진트리, 포화 이진트리로 나뉜다.
  • 이진트리는 이진 탐색 트리와 이진 힙 구현에 사용되며, 효율적인 검색과 정렬을 위해 사용된다.

이진트리 특징

  • 정 이진트리 : 각 노드가 0개 혹은 2개의 자식 노드를 갖는다.
  • 포화 이진트리 : 정 이진트리이면서 완전 이진트리인 경우 / 모든 리프 노드의 레벨이 동일하고, 모든 레벨이 가득 채워져 있는 트리
  • 완전 이진트리 : 마지막 레벨을 제외한 모든 노드가 가득 차 있어야 하고, 마지막 레벨의 노드는 전부 차 있지 않아도 되지만 왼쪽이 채워져야 함

 

이진 탐색 이란 ?

  • 이진 탐색 알고리즘이란 정렬된 데이터 중에서 특정한 값을 찾기 위한 탐색 알고리즘 중 하나이다.
  • 오름차순으로 정렬된 정수의 배열을 같은 크기의 두 부분 배열로 나눈 후, 두 부분 중 탐색이 필요한 부분에서만 탐색하도록 탐색 범위를 제한하여 원하는 값을 찾는 알고리즘이다.

이진 탐색 트리

  • 이진 탐색 트리란 이진 탐색의 속성이 이진트리에 적용된 특별한 형태의 이진트리이다.
  • 모든 왼쪽 자식의 값이 루트나 부모보다 작고, 모든 오른쪽 자식의 값이 루트나 부모보다 큰 값을 가지는 특징이 있다.
    • 이진 탐색 특징
      • 각 노드에 중복되지 않는 키(Key)가 있다.
      • 루트노드의 왼쪽 서브 트리는 해당 노드의 키보다 작은 키를 갖는 노드들로 이루어져 있다.
      • 루트노드의 오른쪽 서브 트리는 해당 노드의 키보다 큰 키를 갖는 노드들로 이루어져 있다.
      • 좌우 서브 트리도 모두 이진 탐색 트리여야 한다.
      •  
    • 이진 탐색 과정
      1. 루트 노드의 키와 찾고자 하는 값을 비교 (찾고자 하는 값이라면 탐색을 종료)
        • 트리 안에 찾고자 하는 값이 없더라도 최대 h번(트리의 높이) 만큼의 연산 및 탐색이 진행
      2. 찾고자 하는 값이 루트 노드의 키보다 작다면 왼쪽 서브 트리로 탐색
      3. 찾고자 하는 값이 루트 노드의 키보다 크다면 오른쪽 서브 트리로 탐색

이진 탐색 예시 순서

문제 : 트리에서 5의 값을 찾아라

  1. 제일 처음에는 루트 노드와 값을 비교
    • 루트 노드 : 10 
    • 루트 노드 보다 작기 때문에 왼쪽 서브 트리로 탐색
  2. 그 다음 노드와 값을 비교
    • 루트 노드 : 7
    • 찾고자 하는 값이 아니므로 다시 왼쪽 서브 트리로 탐색
  3. 그 다음 노드와 값을 비교
    • 루트 노드 : 5
    • 찾고자 하는 값이므로 탐색 종료

총 연산은 3번의 탐색이 진행되었음

 

트리 순회

  • 특정 목적을 위해 트리의 모든 노드를 한 번씩 방문하는 것을 트리 순회라고 함
  • 트리 순회 3가지 방법 ( 노드 순회시 왼쪽 -> 오른쪽으로 조회)
    • 전위순회
      • 부모 노드가 제일 먼저 방문되는 순회 방식
      • 주로 트리를 복사할 때 사용
    • 중위순회
      • 루트를 가운데에 두고 순회
      • 이진 탐색 트리의 오름차순으로 값을 가져올 때 사용
    • 후위순회
      • 루트를 가장 마지막에 순회
      • 트리를 삭제할 때 사용
  • 순회 방식을 나누는 이유 
    • 모든 노드를 방문하기 위해서는 일정한 조건이 필요하고, 트리 구조를 유지보수하거나 특정 목적을 위해서도 순회 방법에 대한 정의는 필수적으로 필요하다.

 

트리 순회 결과

                    1
                   / \
                  2   3
                 / \ / \
                4  5 6  7
                
                   Tree
  • 전위순회 결과
    • 1, 2, 4, 5, 3, 6, 7
  • 중위순회 결과
    • 4, 2, 5, 1, 6, 3, 7
  • 후위순회 결과
    • 4, 5, 2, 6, 7, 3, 1

'자료구조 \ 알고리즘 기법' 카테고리의 다른 글

[ 자료 구조 ] Tree / Graph  (0) 2023.05.11
[ 자료 구조 ] 스택(Stack) / 큐(Queue)  (0) 2023.05.11
[ 자료 구조 ] 자료 구조 살펴보기  (0) 2023.05.10
[ 알고리즘 기법 ] 버블 정렬(bubble sort) 알고리즘 개념 정리  (0) 2023.04.21
[ 알고리즘 기법 ] 재귀 함수 개념 / 재귀 알고리즘 기법 정리  (0) 2023.04.14
  1. 이진트리란 ?
  2. 이진트리 특징
  3. 이진 탐색 이란 ?
  4. 이진 탐색 트리
  5. 이진 탐색 예시 순서
  6. 트리 순회
  7.  
  8. 트리 순회 결과
'자료구조 \ 알고리즘 기법' 카테고리의 다른 글
  • [ 자료 구조 ] Tree / Graph
  • [ 자료 구조 ] 스택(Stack) / 큐(Queue)
  • [ 자료 구조 ] 자료 구조 살펴보기
  • [ 알고리즘 기법 ] 버블 정렬(bubble sort) 알고리즘 개념 정리
_moda
_moda
프론트엔드 개발 공부를 하고 있읍니다.
_moda
ModaLog
_moda
전체
오늘
어제
  • All Records
    • 취업 준비
    • TIL
    • Front end
      • HTML \ CSS
      • JavaScript
      • TypeScript
      • React
      • GIT
      • Node.js
      • 개발 지식
      • 면접 질문 공부
    • Boot Camp
      • code states
      • Project
    • 자료구조 \ 알고리즘 기법
    • Coplit
    • Programmers
    • 모다딥 공부 정리
    • 정보처리기능사

블로그 메뉴

  • 태그
  • 방명록

공지사항

  • 개발자로 가는 길

인기 글

태그

  • 모던 자바스크립트 딥 다이브
  • 타입스크립트
  • Coplit
  • til
  • 네트워크 기초
  • typescript
  • 코드스테이츠
  • javascript
  • CODE STATES
  • react

최근 댓글

최근 글

hELLO · Designed By 정상우.
_moda
[ 자료 구조 ] 이진트리 / 이진 탐색 트리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.