[알고리즘, #12] 트리

권필제·2020년 12월 8일
0

알고리즘

목록 보기
12/15

1. 트리

1.1 개념

  • 계층이 존재하는 비선형 자료구조
  • 나무를 거꾸로 뒤집어 놓은 듯한 모습임
  • 그림

1.2 용어

1.2.1 그림

1.2.2 용어 설명

  • node: 데이터를 저장하는 기본요소
  • root node: 트리의 level0 에 존재하는 노드
  • level: 트리의 깊이를 나타내는 단위
  • parent node: 어떤 노드의 상위에 연결된 노드
  • child node: 어떤 노드의 하위에 연결된 노드
  • sibling: 동일한 level에 존재하는 노드
  • depth: 노드가 가질 수 있는 최대 깊이(level)
  • leaf node: child node가 없는 노드

1.3 종류

  • 이진 트리, 이진 탐색 트리, 균형 트리, 이진 힙 등

2. 이진 트리

2.1 개념

  • 각 노드의 child node의 개수가 최대 2개인 트리
  • 각 노드의 child node의 개수는 0개, 1개 또는 2개

2.2 이진트리와 완전이진트리

2.3 표현하기

2.3.1 트리(tree)를 리스트(list)형식으로

-아래와 같은 트리구조가 있을 때 표현 방법은 다음과 같다.

  • 리스트 표현: [None, 8, 4, 3, 5, 7, 1, 2]

2.3.2 리스트(list)를 트리(tree)형식으로

  • 공식을 이용하면 어떤 구조인지 도식화가 가능하다
  • 공식:
    ㅇ child 왼쪽 노드: index 2
    ㅇ child 오른쪽 노드: index
    2 + 1
    ㅇ parent 노드: index // 2
  • 예시
    ㅇ 리스트 표현: [None, 8, 4, 3, 5, 7, 1, 2]
    ㅇ root 노드: 8
    ㅇ root 노드의 왼쪽 child 노드: 4 (=1x2 번째 노드)
    ㅇ index가 3인 노드의 오른쪽 child 노드: 2 (=3x2+1 번째 노드)
    ㅇ index가 3인 노드의 parent 노드: 8 (=3 //2 = 1 번째 노드)

2.4 특징

  • 한 level 노드 개수: 2^level depth 개
  • 전체 노드의 최대 개수(N): 2^h - 1
  • 최대 이진 트리의 높이: O(log(N))
profile
몰입하는자

0개의 댓글