트리 - 이진트리 정의/ 성질/ 분류/ 표현법

2022. 2. 2. 14:09·자료구조
728x90
반응형

# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다.

# 해당 게시글에 대한 모든 피드백 환영합니다.

 

이전글: 트리-개념/용어정리

이진트리 binary tree

모든 노드가 2개의 서브 트리를 가지고 있는 트리

 

※ 단, 서브트리가 공집합일 수 있음.

  • 모든 노드의 차수 ≤  2
  • 공집합도 이진트리
  • 서브 트리간의 순서 존재: 왼쪽, 오른쪽

성질

  • n 개의 노드를 가진 이진트리는 (n - 1)개의 간선을 가진다.
  • 트리의 높이 = h → h ≤ 노드의 개수 ≤ 2^h - 1
  • 노드의 개수 = n →  ⌈log(n+1)⌉ ≤ 트리의 높이 ≤n

* ⌈x⌉ : x 보다 작지 않은 최소의 정수(올림 연산) ex. ⌈2.4⌉ = 3

 

분류

1. 포화이진트리 full binary tree

트리의 각 레벨에 노드가 꽉 차있는 이진트리

높이 = k -> 이진트리의 노드 개수 = 2^k - 1

 

2. 완전이진트리 complete binary tree

높이가 k일 때,

레벨1부터 k-1까지는 노드가 모두 채워져 있고,

마지막 레벨 k에서 왼쪽부터 오른쪽으로 순서대로 채워져 있는 이진트리

단, 마지막 레벨에서는 노드가 꽉 차 있지 않아도 되지만 중간에 빈 곳이 있으면 안 됨.

 

포화이진트리 ⊃ 완전이진트리

노드에 번호 매기기

아래의 트리는 완전이진트리로 볼 수 있고,

트리의 각 노드에 번호는 아래와 같이 레벨 단위로 왼쪽에서 오른쪽으로 번호를 붙일 수 있다.

이진트리의 표현법

1. 배열 표현법

앞서 살펴본 '노드에 번호 매기기'의 번호가 곧 배열에서의 인덱스가 된다.

단, 인덱스 0은 사용하지 않는다.

배열 표현법은 인덱스만 알면 노드의 부모나 자식을 쉽게 알 수 있다.

  • 노드 i의 부모 인덱스 = i/2
  • 노드 i의 왼쪽 자식 인덱스 = 2*i
  • 노드 i의 오른쪽 자식 인덱스 = 2*i + 1

2. 포인터(링크) 표현법

트리에서의 노드가 구조체로 표현되고, 각 노드가 갖고 있는 포인터는 부모와 자식 노드를 가리킨다.

하나의 노드의 구조를 구조체로 표현하면 다음과 같다.

typedef struct TreeNode{ // 하나의 노드
	int data;
	struct TreeNode *left, *right;
} TreeNode;
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'자료구조' 카테고리의 다른 글

트리 - 반복적 순회(전위/중위/후위 순회 스택으로 이해하기)  (1) 2022.02.03
트리 - 이진트리 순회  (2) 2022.02.02
트리 - 개념/ 용어정리  (0) 2022.02.01
그래프 - 위상정렬  (1) 2022.01.31
그래프 - Floyd 알고리즘  (1) 2022.01.31
'자료구조' 카테고리의 다른 글
  • 트리 - 반복적 순회(전위/중위/후위 순회 스택으로 이해하기)
  • 트리 - 이진트리 순회
  • 트리 - 개념/ 용어정리
  • 그래프 - 위상정렬
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (106)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (3)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
트리 - 이진트리 정의/ 성질/ 분류/ 표현법
상단으로

티스토리툴바