Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

알고리즘 스터디 트리

1,254 views

Published on

코딩 클럽 알고리즘 스터디 - 트리편
결석하는 관계로 자료를 통해 업로드를 합니다.
틀린점, 특이점 바로 문제 제기 부탁드립니다.
* 이미지의 출처 : 구글 검색 ( 여러 블로그 )
http://secmem.tistory.com/204 및 위키 백과 이미지

Published in: Software
  • Be the first to comment

알고리즘 스터디 트리

  1. 1. 0 Algorithm Study (Tree) Seungdols
  2. 2. 1 INDEX. 트리 기본 트리 심화 트리 순회 묻고 답하기 1 2 3 4
  3. 3. 2 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 트리 자료구조를 사용하는 이유는 뭘까? 그럴려면 우선, 트리를 알아야 한다. 자 ~ 이제 시작이야!
  4. 4. 3 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 트리란? 내가 알고 여러분도 아는 그 트리 조건이 있습니다. (이 내용을 이해하기 위한 Node의 개념을 숙지하고 계셔야 합니다.)
  5. 5. 4 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 바로, 트리는 1개 이상의 노드를 갖는 집합으로 다음 조건을 만족합니다. 01 트리에는 루트라고 불리는 특별난 녀석이 있습니다. 02 다른 노드들은 원소가 중복되지 않는 n개의 부속 트리로 나누어지며, 각각은 루트의 부속 트리라 부릅니다.
  6. 6. 5 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 Root Leaf 3 2 1 0 Level
  7. 7. 6 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 트리 구조는 왜 필요할까요 ? 트리는 계층형 구조를 표현하는데 가장 효율적인 구조이다. 바꿔 말하면, 선형 리스트로 계층형 구조를 잘 표현 할 수 있을까요? No!!
  8. 8. 7 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 어디에서 쓰일 수 있을까요? 01 게시판 02 DNS 서버 계층도 03 회사 네트워크 망
  9. 9. 8 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 어디에서 쓰일 수 있을까요? 01 게시판 계층형 게시판(답글)이 가능한 경우 트리 형태로 표현이 가능하다. 사실, DB에서 데이터 자체를 트리 형태로 구조화 시킨 뒤 가져 올 수 있을 것 같다. (Oracle 계층형 쿼리의 예를 들자면..)
  10. 10. 9 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 어디에서 쓰일 수 있을까요? DNS가 뭘 하는지는 아시나요? 컴퓨터는 2진수만 읽고 쓰고 합니다. www.naver.com 이 주소를 알까요? 모릅니다. 그래서 필요한 녀석이 DNS입니다. 02 DNS 서버 계층도
  11. 11. 10 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 실제 IP주소를 www.naver.com 으로 변환/알려주는 녀석이 DNS라고 합니다. (사설이 길었네요….) DNS서버는 해킹 된 적이 없다고 합니다. (용기가 생기시더라도 참아주세요.)
  12. 12. 11 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 트리의 용어를 알아 볼까요? 당황하지 말길 바라요.
  13. 13. 12 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 Sibling : 부모가 같은 자식 노드 Ancestor : 노드의 부모 노드들의 총 집합 Descendant : 노드의 부속 트리에 있는 모든 노드들 Level : 루트로부터의 거리(루트 노드 레벨 = 0) Height : 루트노드로 부터 가장 긴 경로의 잎노드의 레벨 + 1 Degree : 노드의 부속 트리의 개수 Degree of tree : 트리의 최대 차수 Leaf(Terminal): 차수가 0인 노드, 결국 맨 끝에 달려 있어서 자식이 없는 노드 Internal(Non-terminal): 차수가 1 이상인 노드 Parent : 부속 트리를 가진 노드 Child : 부모에 속하는 부속 노드
  14. 14. 13 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 트리 구조와 그래프와의 차이점이 뭘까요?
  15. 15. 14 트리 기본 트리는 무엇인가? 내가 알고 있는 트리? 그 트리가 맞는 건가?1 트리는 노드 자신을 가리키는 Loof가 존재 하지 않습니다. 그래프는 Loof가 존재 할 수 있습니다.
  16. 16. 15 트리심화 트리면 트리지, 무슨 또 심화란 말인가… 공부할게 이렇게 많아서야 원…2 옆의 트리를 보고 이진트리다! 라고 할 수 있습니다. 이진 트리는 트리의 일종으로 차수가 2 이하입니다. 결국, 자식 노드를 최대 2개를 가질 수 있습니다.
  17. 17. 16 트리심화 트리면 트리지, 무슨 또 심화란 말인가… 공부할게 이렇게 많아서야 원…2 이진트리에서 N가 주어진 경우 Hmax = N Hmin = 𝑙𝑜𝑔2 𝑁 + 1 이진트리에서 H(Height)가 주어진 경우 Nmin = H Nmax = 2 𝐻 − 1
  18. 18. 17 트리심화 트리면 트리지, 무슨 또 심화란 말인가… 공부할게 이렇게 많아서야 원…2 완전 이진 트리와 포화 이진트리의 차이 보이시나요? 완전 이진 트리 : 각 노드 자식이 2개씩 이루어 짐. 포화 이진 트리 : 각 레벨의 노드들이 모두 완전 이진트리 조건을 만족함.
  19. 19. 18 트리심화 트리면 트리지, 무슨 또 심화란 말인가… 공부할게 이렇게 많아서야 원…2 배열을 이용하여 트리를 저장한다면???
  20. 20. 19 트리심화 트리면 트리지, 무슨 또 심화란 말인가… 공부할게 이렇게 많아서야 원…2 부모 노드 위치 : parent(i) = (i-1)/2 parent(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 위 배열을 가지고 트리를 표현 해보시기 바랍니다.
  21. 21. 20 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 접근법 2 가지 존재 트리를 순회… 어려우니 트리를 방문 하는 방법이라고 이해하자.
  22. 22. 21 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 Breadth-first-traversal(BFS) Depth-first-traversal(DFS) VS
  23. 23. 22 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 Depth-first-traversal(DFS) 깊이 우선 탐색은 왼쪽 그림처럼 동작합니다. 물론, Order에 따라 출력 형태는 달라질 수 있습니다. DFS는 무조건 깊이 우선! 선택이므로, 가장 깊이 간 뒤 부모로 되돌아오는 행동을 취하며, 순회를 합니다. 이때, 부모로 되돌아 오는 행동을 Backtracking이라 함.
  24. 24. 23 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 Breadth-first-traversal(BFS) 너비 우선 탐색은 왼쪽 그림처럼 동작합니다. 즉, 트리의 레벨 단위로 순회를 하는 구조입니다. BFS는 큐를 통해 구현이 가능합니다. 어떻게? 왜 큐를 쓸까요? – 고민 해보기
  25. 25. 24 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 Order에 따라 차이 3가지 존재 접근법에 따른 차이 2가지 +
  26. 26. 25 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 후위 순회 INORDER 중위 순회 POSTORDER VS 순회 경쟁 PREORDER 전위 순회 VS
  27. 27. 26 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 PREORDER 전위 순회 Root - Left subtree - Right subtree 1 2 3
  28. 28. 27 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 PREORDER Left subtree - Root - Right subtree 중위 순회 1 2 3
  29. 29. 28 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 PREORDER Left subtree - Right subtree - Root 후위 순회 1 2 3
  30. 30. 29 트리 순회(Traverse) 트리의 순회라니!!! 난 그런거 모른다.3 후위 순회 INORDER 중위 순회 POSTORDER VS 순회 경쟁 PREORDER 전위 순회 VS
  31. 31. 30 묻고 답하기 트리에 대해 배웠으니 트리에 대해 설명도 할 줄 알고, 트리를 응용할 줄도 알아야 한다.4 서로 묻고 답하기! 전, 아는 것만 대답합니다.
  32. 32. 31 감사합니다. Made by Seungdols

×