1 분 소요

자료구조_TREE

📌 TREE 구조를 보기에 앞서.. 자료구조 사용 이유?

자료구조(Data Structure)

자료구조를 굳이 왜 만들어놓았는가!에 대한 근본적인 질문이 떠올라서 찾아본 “자료구조를 사용하는 이유?”

자료구조를 배우는 이유는 데이터를 체계적으로 저장하고, 효율적으로 활용하기 위해서이다.

많은 자료구조를 알아두면, 상황별 적합한 타입의 자료구조를 사용해 데이터를 빠르게 정리하고 활용하여 문제를 해결할 수 있다.

데이터를 체계적으로 정리하여 저장해두는 것이 데이터를 활용하는데 훨씬 유리하다.

자료구조종류

TREE

트리구조 예시

1. 개념

  • 트리구조란? 노드로 이루어진 구조
  • 트리구조는 무방향의 그래프로 계층적인 자료이다.
  • 트리구조는 데이터를 순차적으로 나열시킨 선형구조가 아니라, 여러개의 데이터가 존재할 수 있는 비선형 구조이다.
  • 트리구조는 계층적이고 위에서 아래로만 뻗어나가 사이클이 없다.

    1-1) 용어정리

    ◼ 노드: 트리를 구성하는 각각의 요소(데이터)
    ◼ 간선(edge): 노드를 연결하는 선
    ◼ 루트: 트리구조의 시작점
    ◼ 부모노드
    ◼ 자식노드
    ◼ 리프: 자식노드가 없는 노드
    ◼ 깊이(depth): 루트로부터 하위계층의 특정 노드까지의 깊이

  • 루트 노드의 깊이는 0이다.
    ◼ 레벨(level): 트리구조에서 같은 깊이를 가지고 있는 노드를 묶어서 같은 레벨로 표현할 수 있고, 그런 노드들을 형제노드라고 한다.
    ◼ 높이(height): 리프노드를 기준으로 루트까지의 높이
  • 부모노드는 자식노드의 가장 높은 height값에 +1한 높이를 가진다.
    ◼ 서브트리: root에서 뻗어나온 큰 트리 내부에 트리 구조를 가지 작은 트리

1-2) 실사용 예제 => 컴퓨터 디렉토리 구조

디렉토리 구조

2. 이진트리(Binary Tree) & 이진탐색트리(Binary Search Tree)

트리구조는 특징에 따라 여러 이름으로 불리는데, 그 중 많이 사용되는 트리가 이진트리와 이진탐색트리이다.

☝ 이진트리(Binary Tree)

  • 자식노드가 최대 두 개인 노드들로 구성된 트리
  • 자식노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 바꿀 수 있다.

정이진트리, 포화이진트리, 완전이진트리

1) 정이진트리: 각 노드가 0개 혹은 2개의 자식 노드를 가진다.
2) 완전이진트리: 마지막 레벨을 제외한 모든 노드가 가득 차있어야 하고, 마지막 레델의 노드는 왼쪽 노드가 채워져야 한다.
3) 포화 이진 트리: 모든 리프 노드의 레벨이 동일하고 모든 레벨이 가득 채워있는 트리이다.

☝ 이진탐색트리(Binary Search Tree)

  • 이진 탐색 트리는 모든 왼쪽 자식의 값이 루트나 부모보다 작고 모든 오른쪽 자식의 값이 루트나 부모보다 큰 값을 가지는 특징
  • 균형잡힌 트리가 아닐 때, 한쪽으로 몰릴 수 있어 이때에는 시간이 더 걸리기 때문에 해결해야한다.
  • 균형이 잡히지 않는 트리 탐색 문제는’트리구조를 재조정’함으로써 해결할 수 있다.

간단한 이해를 원하시면👉 https://bit.ly/3mDz09M
조금 더 딥하게 이해하고 싶으면👉 https://gmlwjd9405.github.io/2018/08/12/data-structure-tree.html

댓글남기기