2sjin
2sjin
2sjin

블로그 메뉴

  • My GitHub
  • 전체 게시글
    • UNIX 이론 정리
    • Linux
      • Linux 관련 노하우
      • Linux 과제
      • OracleCloud & Ubuntu
      • Tomcat Server
      • MySQL Server
      • 구름 OS
      • 라즈베리파이4
    • 데이터베이스
      • DB 관련 노하우
      • DB 과제
      • DB 프로젝트
    • Unity
    • Computer Science
      • 통신 & 네트워크
      • 자료구조 & 알고리즘
      • 운영체제
      • 정보보호
      • 기타 분야
    • 소프트웨어
      • 소프트웨어공학
      • 프로그래밍 언어

공지사항

인기 글

태그

  • 팀 프로젝트
  • 개인 Term Project

최근 글

티스토리

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
2sjin

2sjin

[알고리즘 과제] 이진 탐색 트리의 구성, 노드의 삽입과 삭제
Computer Science/자료구조 & 알고리즘

[알고리즘 과제] 이진 탐색 트리의 구성, 노드의 삽입과 삭제

2022. 10. 4. 21:44

1. 이진 탐색 알고리즘(의사 코드)

① 데이터 집합의 중앙값을 선택(이진 탐색 트리에서는 Root 선택)
② 중앙값(Root)과 찾고자 하는 목표값과 비교
③ 목표값이 중앙값(Root)보다 작으면 왼쪽, 크면 오른쪽의 이진 탐색을 수행.
④ 찾고자 하는 데이터가 발견될 때까지 ①~③ 반복

 

2. 이진 탐색 트리 구성 과정

30, 50, 20, 35, 15, 60, 55, 70, 25

 

① 30: Root 노드가 없으므로 30 삽입.

② 50: 30보다 크므로 오른쪽 탐색. 왼쪽에 50 삽입(하위 노드가 없으므로).

③ 20: 30보다 작으므로 왼쪽 탐색. 왼쪽에 20 삽입.

④ 35: 30보다 크므로 오른쪽 탐색. 50보다 작으므로 왼쪽 탐색. 왼쪽에 35 삽입.

⑤ 15: 30보다 작으므로 왼쪽 탐색. 20보다 작으므로 왼쪽 탐색. 왼쪽에 15 삽입.

⑥ 60: 30보다 크므로 오른쪽 탐색. 50보다 크므로 오른쪽 탐색. 오른쪽에 60 삽입.

⑦ 55: 30보다 크므로 오른쪽 탐색. 50보다 크므로 오른쪽 탐색.
      60보다 작으므로 왼쪽 탐색. 왼쪽에 55 삽입.

⑧ 70: 30보다 크므로 오른쪽 탐색. 50보다 크므로 오른쪽 탐색.

      60보다 크므로 오른쪽 탐색. 오른쪽에 70 삽입.

⑨ 25: 30보다 작으므로 왼쪽 탐색. 20보다 크므로 오른쪽 탐색. 오른쪽에 25 삽입.

 

3. 노드 삽입(Insert) 과정

ㄱ. 삽입할 노드: 32

① 32: 30보다 크므로 오른쪽 탐색
 
② 32: 50보다 작으로 왼쪽 탐색
 
③ 32: 35보다 작으므로 왼쪽 탐색
 
④ 하위 노드가 없으므로 32 삽입
 
ㄴ. 삽입할 노드: 19
① 19: 30보다 작으므로 왼쪽 탐색
 
② 19: 20보다 작으로 왼쪽 탐색
 
③ 19: 15보다 크므로 오른쪽 탐색
 
④ 하위 노드가 없으므로 19 삽입

 

 

3. 노드 삭제(Delete) 과정

ㄱ. 삭제할 노드: 60

① 60: 30보다 크므로 오른쪽 탐색
 
② 60: 50보다 크으로 오른쪽 탐색
 
③ 60 삭제
④ 삭제된 노드 60의 오른쪽 서브 트리 내에서 최소값인 70을 기존 60의 자리로 이동

 

ㄴ. 삭제할 노드: 50

① 50: 30보다 크므로 오른쪽 탐색
 
② 50 삭제
③ 삭제된 노드 50의 오른쪽 서브 트리 내에서 최소값인 55를 기존 50의 자리로 이동
 

 

ㄷ. 삭제할 노드: 30

① 30 삭제
② 삭제된 노드 30의 오른쪽 서브 트리 내에서 최소값인 35를 기존 30의 자리로 이동
 
 
 
 
 

'Computer Science > 자료구조 & 알고리즘' 카테고리의 다른 글

[알고리즘 과제] 스택의 응용: 사칙연산  (1) 2022.10.04
[알고리즘 과제] 이진 트리 순회 및 표기식(전위, 중위, 후위)  (1) 2022.10.04
[알고리즘 과제] 해싱(Hashing)  (1) 2022.10.03
[알고리즘 과제] 퀵 정렬(Quick Sort) 알고리즘  (0) 2022.10.03
[알고리즘 과제] 연결 리스트 삽입 및 삭제  (0) 2022.10.03
'Computer Science/자료구조 & 알고리즘' 카테고리의 다른 글
  • [알고리즘 과제] 스택의 응용: 사칙연산
  • [알고리즘 과제] 이진 트리 순회 및 표기식(전위, 중위, 후위)
  • [알고리즘 과제] 해싱(Hashing)
  • [알고리즘 과제] 퀵 정렬(Quick Sort) 알고리즘
2sjin
2sjin

티스토리툴바