티스토리 뷰

c언어/자료구조

트리의 개요

삼전동해커 2021. 1. 31. 14:35

트리는 스택,큐와 달리 비선형, 계층적 관계를 표현하는 구조이다.

트리는 데이터의 저장,삭제 보다는 표현에 초점을 두고 있다.

 

 

 

terminal node : 아래에 다른 노드가 뻗치지 않은 최하위 노드 ex)H,I,J,F,G

internal node: terminal node를 제외한 노드 ex)A,B,C,D,E

 

 

이진 트리와 서브 트리

이진트리란

1.루트 노드를 중심으로 두개의 서브 트리로 나뉜다. 

2.나뉘어진 두 서브 트리도 모두 이진 트리이어야 한다.

이 두 조건을 만족하는 트리이다.

 

위의 사진은 E가 2번 조건을 만족하지 못하니 이진 트리가 아니다라고 생각 할 수 있지만

사실 저 트리도 이진 트리가 맞다.

 

E의 자식 노드로 J의 형제가 존재할 수 있기 때문에 공(empty) 노드로 남아 있다.

 

 

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

 

트리에서 레벨은 루트 노드를 레벨0으로 시작해 자식으로 내려갈 수록 1씩 증가하는 단위이고,

높이는 총 레벨 이기 때문에 최고 레벨(최하위 노드)=높이로 볼 수 있다.

포화 이진 트리는 모든 레벨들의 자식들이 꽉 차 있는 상태라 노드를 추가하기 위해서는 레벨을 늘려야 하는 모습이다.

 

 

완전 이진 트리는 포화 이진 트리처럼 모든 레벨이 꽉 찬 상태는 아니지만 

 

 

위와 같이 빈 틈 없이 채워진 상태이다.

E,F,G의 자식 노드들이 공 노드로 채워져 있기 때문에 빈 틈이 없다고 볼 수 있다.

 

 

'c언어 > 자료구조' 카테고리의 다른 글

[자료구조]이진 트리 순회  (0) 2021.02.01
[자료구조]이진 트리 구현  (0) 2021.01.31
덱의 이해와 구현  (0) 2021.01.31
큐의 활용  (0) 2021.01.31
Queue  (0) 2021.01.22
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함