32
0 Algorithm Study (Tree) Seungdols

알고리즘 스터디 트리

Embed Size (px)

Citation preview

0

AlgorithmStudy (Tree)

Seungdols

1

INDEX.

트리기본

트리심화

트리순회

묻고답하기

1 2 3 4

2

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

트리 자료구조를 사용하는 이유는 뭘까?

그럴려면 우선, 트리를 알아야 한다.

자 ~ 이제 시작이야!

3

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

트리란? 내가 알고 여러분도 아는 그 트리

조건이 있습니다.

(이 내용을 이해하기 위한 Node의 개념을 숙지하고 계셔야 합니다.)

4

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

바로, 트리는 1개 이상의 노드를 갖는 집합으로 다음 조건을 만족합니다.

01 트리에는 루트라고 불리는 특별난 녀석이 있습니다.

02 다른 노드들은 원소가 중복되지 않는 n개의 부속 트리로 나누어지며, 각각은 루트의 부속 트리라 부릅니다.

5

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1Root

Leaf 3

2

1

0

Level

6

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

트리 구조는 왜 필요할까요 ?트리는계층형 구조를 표현하는데가장 효율적인 구조이다.

바꿔 말하면, 선형 리스트로 계층형 구조를잘 표현 할 수 있을까요?

No!!

7

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

어디에서 쓰일 수 있을까요?01 게시판02 DNS 서버 계층도03 회사 네트워크 망

8

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

어디에서 쓰일 수 있을까요?

01 게시판

계층형 게시판(답글)이 가능한 경우트리 형태로 표현이 가능하다.

사실, DB에서 데이터 자체를 트리 형태로구조화 시킨 뒤 가져 올 수 있을 것 같다.(Oracle 계층형 쿼리의 예를 들자면..)

9

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

어디에서 쓰일 수 있을까요?DNS가 뭘 하는지는 아시나요?컴퓨터는 2진수만 읽고 쓰고 합니다.www.naver.com 이 주소를 알까요?모릅니다. 그래서 필요한 녀석이 DNS입니다.

02 DNS 서버 계층도

10

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

실제 IP주소를 www.naver.com 으로변환/알려주는 녀석이 DNS라고 합니다.(사설이 길었네요….)

DNS서버는 해킹 된 적이 없다고 합니다.(용기가 생기시더라도 참아주세요.)

11

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

트리의 용어를 알아 볼까요?

당황하지 말길 바라요.

12

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

Sibling : 부모가같은 자식 노드

Ancestor : 노드의 부모 노드들의 총 집합

Descendant : 노드의 부속 트리에 있는 모든 노드들

Level : 루트로부터의 거리(루트 노드 레벨 = 0)

Height : 루트노드로 부터 가장 긴 경로의잎노드의 레벨 + 1

Degree : 노드의 부속 트리의 개수

Degree of tree : 트리의 최대 차수

Leaf(Terminal): 차수가 0인 노드, 결국 맨 끝에 달려 있어서 자식이 없는 노드

Internal(Non-terminal): 차수가 1 이상인 노드

Parent : 부속 트리를 가진 노드

Child : 부모에 속하는 부속 노드

13

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

트리 구조와 그래프와의차이점이뭘까요?

14

트리 기본트리는무엇인가?

내가알고있는트리? 그트리가맞는건가?1

트리는 노드 자신을 가리키는 Loof가 존재 하지 않습니다.

그래프는 Loof가 존재할 수 있습니다.

15

트리심화트리면트리지, 무슨또심화란말인가…

공부할게이렇게많아서야원…2

옆의 트리를 보고 이진트리다!

라고 할 수 있습니다.

이진 트리는 트리의 일종으로 차수가 2 이하입니다.

결국, 자식노드를 최대 2개를 가질 수 있습니다.

16

트리심화트리면트리지, 무슨또심화란말인가…

공부할게이렇게많아서야원…2

이진트리에서 N가 주어진 경우Hmax = NHmin = 𝑙𝑜𝑔2𝑁 + 1

이진트리에서 H(Height)가 주어진 경우Nmin = HNmax = 2𝐻 − 1

17

트리심화트리면트리지, 무슨또심화란말인가…

공부할게이렇게많아서야원…2

완전 이진 트리와 포화 이진트리의 차이 보이시나요?

완전 이진 트리 : 각노드 자식이 2개씩 이루어 짐.포화 이진 트리 : 각 레벨의 노드들이 모두 완전 이진트리 조건을 만족함.

18

트리심화트리면트리지, 무슨또심화란말인가…

공부할게이렇게많아서야원…2

배열을 이용하여 트리를 저장한다면???

19

트리심화트리면트리지, 무슨또심화란말인가…

공부할게이렇게많아서야원…2

부모 노드 위치 : parent(i) = (i-1)/2parent(i) = 0 if I = 0 (루트 노드는 부모가 없다.)

왼쪽 노드 : left(i) = 2 * i + 1

오른쪽 노드 : right(i) = 2 * i + 2;

[8]

[7]

[6]

[5]

[4]

[3]

[2]

[1]

[0] A

B

C

D

E

F

G

H

I

위 배열을 가지고 트리를 표현 해보시기 바랍니다.

20

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

접근법 2 가지 존재

트리를 순회…

어려우니 트리를 방문 하는 방법이라고 이해하자.

21

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

Breadth-first-traversal(BFS)

Depth-first-traversal(DFS)

VS

22

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

Depth-first-traversal(DFS)

깊이 우선 탐색은 왼쪽 그림처럼 동작합니다.

물론, Order에따라 출력 형태는 달라질 수 있습니다.

DFS는 무조건 깊이 우선! 선택이므로, 가장 깊이 간 뒤

부모로 되돌아오는 행동을 취하며, 순회를 합니다.

이때, 부모로 되돌아 오는 행동을 Backtracking이라 함.

23

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

Breadth-first-traversal(BFS)

너비 우선 탐색은 왼쪽 그림처럼 동작합니다.

즉, 트리의 레벨 단위로 순회를 하는 구조입니다.

BFS는 큐를 통해 구현이 가능합니다.

어떻게? 왜 큐를 쓸까요? – 고민 해보기

24

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

Order에 따라 차이 3가지 존재

접근법에 따른 차이 2가지+

25

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

후위 순회

INORDER

중위 순회

POSTORDERVS

순회 경쟁

PREORDER

전위 순회

VS

26

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

PREORDER

전위 순회

Root - Left subtree - Right subtree

1

2 3

27

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

PREORDER

Left subtree - Root - Right subtree

중위 순회

1

2 3

28

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

PREORDER

Left subtree - Right subtree - Root

후위 순회

1

2 3

29

트리 순회(Traverse)트리의순회라니!!!

난그런거모른다.3

후위 순회

INORDER

중위 순회

POSTORDERVS

순회 경쟁

PREORDER

전위 순회

VS

30

묻고 답하기트리에대해배웠으니트리에대해설명도할줄알고, 트리를응용할줄도

알아야한다.4

서로 묻고 답하기!

전, 아는 것만 대답합니다.

31

감사합니다.Made by Seungdols