SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
자료구조 – 트리 (tree)
yarn
tree?
root
tree
root
가지
잎
tree의 용어
Level 0
sub tree Level 1
Level 2
depth
length
길이 (length)
• 길이(length)
• 출발노드에서 목적지 노드까지의 노드 개수.
• 깊이 (depth)
• root 노드에서 해당 노드까지 길이
• 높이
• root노드에서 가장 깊은 노드까지의 길이
• 레벨
• 깊이가 같은 노드의 집합
• 차수
• 해당노드의 자식수
Left Child Right Sibling 표현법
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
Data
Child Sibling
이진 트리 (Binary Tree)
• 모든 노드의 차수가 2 이하.
root
왼쪽 자식 노드 오른쪽 자식노드
root
왼쪽 자식 노드 공백 노드
root
공백 노드 오른쪽 자식노드
이진 트리의 서브 트리
A
B C
D E F G
H I J K L
A의 왼쪽의 서브트리
B의 왼쪽의 서브트리
추상 자료형 이진 트리
이진트리의 특징
• n개의 노드를 가진 이진 트리는 항상 (n-1)개의 간선을 가진다.
• 높이가 h인 이진트리가 가질 수있는 노드의 최소 개수는 (h+1)개가 되
며, 최대개수는 2 -1개가 된다.h+1
포화 이진 트리 (full binary tree)
A
B C
D
E F G
H I L M ONJ K
완전 이진 트리 (complete binary tree)
A
B C
D
E F G
H I LJ K
편향 이진 트리 (skewed binary tree)
A
B
C
D
A
B
C
D
왼쪽편향 이진트리 오른쪽편향 이진트리
배열을 이용한 완전 이진 트리 구현
A
B
C
D
E
F
G
H
I
J
K
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
A
B C
D
E F G
H I LJ K
부모노드
왼쪽 자식
오른쪽 자식
배열을 이용한 편향 이진 트리 구현
A
B
C
D
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
A
B
D
H
부모노드
왼쪽 자식
오른쪽 자식
연결 자료구조를 이요한 이진 트리 구현
left data right
left data right left data right
이진 트리의 전위 순회
F – B – A – D – C – E – G – I - H
이진 트리의 전위 순위 알고리즘
//재귀적 호출
이진 트리의 중위 순회
A – B – C – D – E – F – G - H
이진 트리의 중위 순회 알고리즘
//재귀적 호출
//재귀적 호출
이진 트리의 후위 순회
A – C – E – D – B – H – I – G - F
이진 트리의 후위 순회 알고리즘
이진 탐색 트리 (binary search tree)
• 탐색을 위한 자료구조로 이진 트리를 사용하기 위해서 저장할 데이터 크
기에 따라 노드의 위치를 정의한 것이 이진 탐색 트리.
이진 탐색 트리 정의
• 모든 원소는 서로 다른 유일한 키를 갖는다.
• 왼쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작다.
• 오른쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 크다.
• 왼쪽 서브 트리와 오른쪽 서브 트리도 이진 탐색 트리다.
이진 탐색 트리의 구조
8
3 10
2 5 14
11
16
이진 탐색 트리의 탐색 연산 알고리즘
이진 탐색 트리의 삽입 연산
이진 탐색 트리에서 삭제 알고리즘
히프
• 완전 이진 트리에 있는 노드 중에서 키값이 가장 큰 노드나, 가장 작은
노드를 찾기 위한 자료구조.
• 가장 큰 노드를 찾기 위한 히프르 max heap
• 가장 작은 노드를 찾기 위한 히프를 min heap
• max heap는 부모의 노드 키값이 자식의 키값 보다 항상 크다.
• min heap는 부모의 노드 키값이 자식의 키값 보다 항상 작다.

Más contenido relacionado

Destacado

자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션Choonghyun Yang
 
그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조Choonghyun Yang
 
Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)Choonghyun Yang
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cliChoonghyun Yang
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Choonghyun Yang
 
Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)Choonghyun Yang
 
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화Choonghyun Yang
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조영기 김
 
데이터 모델링
데이터 모델링데이터 모델링
데이터 모델링Choonghyun Yang
 

Destacado (17)

Atom
AtomAtom
Atom
 
자료구조 큐
자료구조 큐자료구조 큐
자료구조 큐
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
연결 자료구조
연결 자료구조연결 자료구조
연결 자료구조
 
자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션자바병렬프로그래밍 9.gui 애플리케이션
자바병렬프로그래밍 9.gui 애플리케이션
 
그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조그림으로 공부하는 오라클 구조
그림으로 공부하는 오라클 구조
 
하둡관리
하둡관리하둡관리
하둡관리
 
Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)Http 완벽 가이드(2장 url과 리소스)
Http 완벽 가이드(2장 url과 리소스)
 
Spring boot 5장 cli
Spring boot 5장 cliSpring boot 5장 cli
Spring boot 5장 cli
 
Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)Spring boot 공작소(1-4장)
Spring boot 공작소(1-4장)
 
Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)Http 완벽가이드(3장 http 메시지)
Http 완벽가이드(3장 http 메시지)
 
Spring boot actuator
Spring boot   actuatorSpring boot   actuator
Spring boot actuator
 
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화
 
알고리즘과 자료구조
알고리즘과 자료구조알고리즘과 자료구조
알고리즘과 자료구조
 
Http method
Http methodHttp method
Http method
 
데이터 모델링
데이터 모델링데이터 모델링
데이터 모델링
 

Más de Choonghyun Yang

Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Choonghyun Yang
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 aChoonghyun Yang
 
대규모 데이터 처리 입문
대규모 데이터 처리 입문대규모 데이터 처리 입문
대규모 데이터 처리 입문Choonghyun Yang
 
네트워크 부트의 활용, 원격관리
네트워크 부트의 활용, 원격관리네트워크 부트의 활용, 원격관리
네트워크 부트의 활용, 원격관리Choonghyun Yang
 
NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스Choonghyun Yang
 
서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)Choonghyun Yang
 
NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가Choonghyun Yang
 
CODE - 주판에서 반도체까지
CODE - 주판에서 반도체까지CODE - 주판에서 반도체까지
CODE - 주판에서 반도체까지Choonghyun Yang
 
프로그래머로 사는 법 Chapter.19 지금 알고 있는걸 그때도 알았더라면
프로그래머로 사는 법   Chapter.19  지금 알고 있는걸 그때도 알았더라면프로그래머로 사는 법   Chapter.19  지금 알고 있는걸 그때도 알았더라면
프로그래머로 사는 법 Chapter.19 지금 알고 있는걸 그때도 알았더라면Choonghyun Yang
 

Más de Choonghyun Yang (12)

Git
GitGit
Git
 
Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins Maven build for 멀티프로젝트 in jenkins
Maven build for 멀티프로젝트 in jenkins
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
 
대규모 데이터 처리 입문
대규모 데이터 처리 입문대규모 데이터 처리 입문
대규모 데이터 처리 입문
 
네트워크 부트의 활용, 원격관리
네트워크 부트의 활용, 원격관리네트워크 부트의 활용, 원격관리
네트워크 부트의 활용, 원격관리
 
NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스NoSQL distilled.그래프 데이터베이스
NoSQL distilled.그래프 데이터베이스
 
서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)서버 인프라를지탱하는기술(1.3,1.4)
서버 인프라를지탱하는기술(1.3,1.4)
 
NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가
 
No sql 분산모델
No sql 분산모델No sql 분산모델
No sql 분산모델
 
CODE - 주판에서 반도체까지
CODE - 주판에서 반도체까지CODE - 주판에서 반도체까지
CODE - 주판에서 반도체까지
 
십진수 이외의 것
십진수 이외의 것십진수 이외의 것
십진수 이외의 것
 
프로그래머로 사는 법 Chapter.19 지금 알고 있는걸 그때도 알았더라면
프로그래머로 사는 법   Chapter.19  지금 알고 있는걸 그때도 알았더라면프로그래머로 사는 법   Chapter.19  지금 알고 있는걸 그때도 알았더라면
프로그래머로 사는 법 Chapter.19 지금 알고 있는걸 그때도 알았더라면
 

자료구조 – 트리 (Tree)

  • 4. tree의 용어 Level 0 sub tree Level 1 Level 2 depth length
  • 5. 길이 (length) • 길이(length) • 출발노드에서 목적지 노드까지의 노드 개수. • 깊이 (depth) • root 노드에서 해당 노드까지 길이 • 높이 • root노드에서 가장 깊은 노드까지의 길이 • 레벨 • 깊이가 같은 노드의 집합 • 차수 • 해당노드의 자식수
  • 6. Left Child Right Sibling 표현법 Data Child Sibling Data Child Sibling Data Child Sibling Data Child Sibling Data Child Sibling Data Child Sibling Data Child Sibling
  • 7. 이진 트리 (Binary Tree) • 모든 노드의 차수가 2 이하. root 왼쪽 자식 노드 오른쪽 자식노드 root 왼쪽 자식 노드 공백 노드 root 공백 노드 오른쪽 자식노드
  • 8. 이진 트리의 서브 트리 A B C D E F G H I J K L A의 왼쪽의 서브트리 B의 왼쪽의 서브트리
  • 10. 이진트리의 특징 • n개의 노드를 가진 이진 트리는 항상 (n-1)개의 간선을 가진다. • 높이가 h인 이진트리가 가질 수있는 노드의 최소 개수는 (h+1)개가 되 며, 최대개수는 2 -1개가 된다.h+1
  • 11. 포화 이진 트리 (full binary tree) A B C D E F G H I L M ONJ K
  • 12. 완전 이진 트리 (complete binary tree) A B C D E F G H I LJ K
  • 13. 편향 이진 트리 (skewed binary tree) A B C D A B C D 왼쪽편향 이진트리 오른쪽편향 이진트리
  • 14. 배열을 이용한 완전 이진 트리 구현 A B C D E F G H I J K [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] A B C D E F G H I LJ K 부모노드 왼쪽 자식 오른쪽 자식
  • 15. 배열을 이용한 편향 이진 트리 구현 A B C D [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] A B D H 부모노드 왼쪽 자식 오른쪽 자식
  • 16. 연결 자료구조를 이요한 이진 트리 구현 left data right left data right left data right
  • 17. 이진 트리의 전위 순회 F – B – A – D – C – E – G – I - H
  • 18. 이진 트리의 전위 순위 알고리즘 //재귀적 호출
  • 19. 이진 트리의 중위 순회 A – B – C – D – E – F – G - H
  • 20. 이진 트리의 중위 순회 알고리즘 //재귀적 호출 //재귀적 호출
  • 21. 이진 트리의 후위 순회 A – C – E – D – B – H – I – G - F
  • 22. 이진 트리의 후위 순회 알고리즘
  • 23. 이진 탐색 트리 (binary search tree) • 탐색을 위한 자료구조로 이진 트리를 사용하기 위해서 저장할 데이터 크 기에 따라 노드의 위치를 정의한 것이 이진 탐색 트리.
  • 24. 이진 탐색 트리 정의 • 모든 원소는 서로 다른 유일한 키를 갖는다. • 왼쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작다. • 오른쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 크다. • 왼쪽 서브 트리와 오른쪽 서브 트리도 이진 탐색 트리다.
  • 25. 이진 탐색 트리의 구조 8 3 10 2 5 14 11 16
  • 26. 이진 탐색 트리의 탐색 연산 알고리즘
  • 27. 이진 탐색 트리의 삽입 연산
  • 28. 이진 탐색 트리에서 삭제 알고리즘
  • 29. 히프 • 완전 이진 트리에 있는 노드 중에서 키값이 가장 큰 노드나, 가장 작은 노드를 찾기 위한 자료구조. • 가장 큰 노드를 찾기 위한 히프르 max heap • 가장 작은 노드를 찾기 위한 히프를 min heap • max heap는 부모의 노드 키값이 자식의 키값 보다 항상 크다. • min heap는 부모의 노드 키값이 자식의 키값 보다 항상 작다.