[TIL] Data Structures: Tree

Ha Young Do·2021년 5월 2일
post-thumbnail

Tree

  • 하나의 뿌리로부터 가지가 아래로 뻗어나가는 형태의 일방향 그래프
  • 계층적 자료구조: 데이터가 아래로 연결되어 뻗어 나가면서 계층적으로 표현이 되고 사이클이 없다
  • 비선형 구조: 하나의 데이터 뒤에 여러 개의 데이터가 존재할 수 있다
  • 루트 (root): tree의 시초가 되는 꼭짓점 데이터
  • 노드 (node): tree에 속한 각각의 꼭짓점 데이터
  • 부모 노드 (parent node): 특정 node에 edge로 연결이 된 상위 node
  • 자식 노드 (child node): 특정 node에 edge로 연결이 된 하위 node
  • 레벨 (level): node와 node 사이의 간격 (root가 level 1)


(흔히 접하는 tree의 예시로 컴퓨터의 파일 관리 구조가 있다)

Binary Search Tree


이진 트리 (binary tree): 각 node 마다 최대 2개의 child node를 가질 수 있는 tree
이진 탐색 트리 (binary search tree): 모든 왼쪽 자식은 부모보다 작은 값이고, 모든 오른쪽 자식은 부모보다 큰 값인 tree (새로운 node를 추가할 때, 위의 규칙에 따라 새 node의 값을 따져 위치를 정한다)

Tree traversal

  • 트리 순회 (tree traversal): 특정 목적 (예: 조건에 맞는 node를 찾기 위해) 을 위해 모든 노드를 특정 순서대로 방문하는 것
  • 전위 순회 (preorder traversal): root에서 시작해 기준으로 왼쪽 node부터 탐색 후 오른쪽 node를 탐색한다 (그림에서 하늘색)
  • 중위 순회 (inorder traversal): 가장 왼쪽 node에서 시작해 parent node, 오른쪽 node 순서로 탐색한다 (그림에서 초록색)
  • 후위 순회 (postorder traversal): 가장 왼쪽 node에서 시작해 오른쪽 node를 탐색 후 1 level 위로 올라가 탐색한다 (그림에서 분홍색)

Heap

  • 힙 구조 (heap): binary tree의 일종으로, (1) 가장 아래를 제외한 tree의 각 level이 채워져 있어야 하며 (2) 가장 아래 level은 전부 채워져 있지 않은 경우 왼쪽부터 순서대로 채워져 있어야 하고 (3) parent node의 값이 child node보다 커야 한다
  • 그림에서 (b)는 (2)번 조건을 충족하지 않아 heap이 아니며, (c)는 (3)번 조건을 충족하지 않아 heap이 아니다 ((a)만 heap에 해당)
profile
Codestates Software Engineering Full IM 28th

0개의 댓글