일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 네이버 부스트캠프 멤버십
- 파이썬 코딩테스트
- 자바스크립트
- 브라우저 동작
- 코딩테스트
- 웹크롤링
- Server Side Rendering
- 자바스크립트 객체
- 비디오 스트리밍
- 스택
- 멘션 추천 기능
- 자바 프로젝트
- 네이버 부캠
- react
- 자바스크립트 컴파일
- 네이버 부스트캠프
- Image 컴포넌트
- React ssr
- 파이썬 웹크롤링
- beautifulsoup
- c++
- Next.js
- Next/Image 캐싱
- React.js
- 부스트캠프
- 씨쁠쁠
- PubSub 패턴
- git checkout
- 프로그래머스
- 파이썬
Archives
- Today
- Total
코린이의 개발 일지
[파이썬 자료구조] 트리(Trees) - 트리의 개념, 이진트리의 개념 본문
반응형
1. 트리(Trees)
트리 (Trees) 란?
→ node와 edge 를 이용하여 테이터의 배치 형태를 추상화한 자료구조
개념 이해를 위해 적당한 그림을 가져왔다.
위의 그림을 보면
- 9개의 노드, 8개의 edge
- Root node = A -> 가장 머리가 되는 노드
- Leaf node = H, I, E, F, G -> 가장 끝에 있는 노드, 즉 자식 노드가 없는 노드
- Internal node = 그외의 노드
- 부모 자식 관계 (parent, child) 그리고 같은 부모 아래 child 들은 sibling 관계
- 부모의 부모 - 조상(ancestor), 자식의 자식 - 후손(descendant)
- 노드의 level → Root 부터 level 0으로 지정 (그림 참조)
- 트리의 높이 (Height) = 최대 수준 (level) +1 (여기서는 4)
- 노드의 차수 (Degree) - 자식(서브트리)의 수
→ 따라서 degree가 0인 노드들은 leaf node 이다.
이 정도로 트리의 기본 골격 구조를 설명할 수 있다.
2. 이진 트리 (Binary Tree)
모든 노드의 차수가 2 이하인 트리 ⇒ 이진트리 (Binary Tree)
이진트리는 재귀적으로 정의 할 수 있다.
빈트리 (empty tree)이거나
루트 노드 + 왼쪽 서브트리 + 오른쪽 서브트리
(단, 이때 왼쪽과 오른쪽 서브트리 또한 이진트리)
=> 이진트리
- 포화 이진 트리 (Full Binary Tree)
→ 모든 레벨에서 노드들이 모두 채워져 있는 이진 트리
→ 높이가 k 이고 노드의 개수가 2^k-1 인 이진트리
- 완전 이진 트리 (Complete Binary Tree)
→ 높이 k 인 완전 이진트리
→레벨 k-2까지는 모든 노드가 2개의 자식을 가진 포화 이진 트리
→레벨 k-1에서는 왼쪽부터 노드가 순차적으로 채워져 있는 이진 트리
따라서 위의 그림의 경우 완전 이진트리 임을 알 수 있다.
반응형
'CS공부 > 자료구조' 카테고리의 다른 글
[파이썬 자료구조] 이진 탐색 트리 (코드 구현 - 찾기, 순회, 삽입, 제거) (0) | 2021.08.30 |
---|---|
[파이썬 자료구조] 이진 트리 (Binary Tree) - 코드 구현(size, depth, travelsal) (0) | 2021.08.30 |
[파이썬 자료구조] 큐(Queue) - 큐의 활용, 환형큐 구현, 우선순위 큐 구현 (0) | 2021.08.25 |
[파이썬 자료구조] 큐(Queue) - 개념, 연산, 구현(배열, 연결리스트) (0) | 2021.08.25 |
[파이썬 자료구조] 스택(stack) - 파이썬을 이용한 중위 표기법 수식을 후위 표기법으로 변환하기 (0) | 2021.08.24 |
Comments