일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자료구조
- AIFFEL
- DFS알고리즘
- 인강
- 프림알고리즘
- 코딩테스트인강
- Korean-NLP
- 코딩테스트
- 내돈내산
- Ai
- 파이썬
- BFS알고리즘
- package-install
- 최단거리알고리즘
- 백준알고리즘2920번
- 시나공정보처리기사
- 연결리스트
- 1주차완료
- nqueen
- 해쉬테이블
- 크루스칼알고리즘
- 트리구조
- 알고리즘
- 환급챌린지
- 시간복잡도
- 퀵정렬
- 코딩테스트대비
- FastCampus
- 작심삼개월
- 패스트캠퍼스
- Today
- Total
DevLog
[패스트캠퍼스 :: 코딩테스트 인강] 4주차 ① 트리 / 이진 트리 본문
알고리즘/기술면접 완전 정복 올인원 패키지 Online
자료구조(트리) - 트리(Tree) - 1
자료구조(트리) - 트리(Tree) - 2
자료구조(트리) - 트리(Tree) - 3
자료구조(트리) - 트리(Tree) - 4
정보처리기사 필기를 무사히 합격시켜놓고 일주일을 쉬다 보니
이번 주 자료구조 강의는 조금 늦었다.
트리 (Tree) 구조
-
트리: Node와 Branch를 이용해서, 사이클을 이루지 않도록 구성한 데이터 구조
-
실제로 어디에 많이 사용되나?
-
트리 중 이진트리 (Binary Tree) 형태의 구조로, 탐색(검색) 알고리즘 구현을 위해 많이 사용됨
-
-
Node: 트리에서 데이터를 저장하는 기본 요소 (데이터와 다른 연결된 노드에 대한 Branch 정보 포함)
-
Root Node: 트리 맨 위에 있는 노드
-
Level: 최상위 노드를 Level 0으로 하였을 때, 하위 Branch로 연결된 노드의 깊이를 나타냄
-
Parent Node: 어떤 노드의 다음 레벨에 연결된 노드
-
Child Node: 어떤 노드의 상위 레벨에 연결된 노드
-
Leaf Node (Terminal Node): Child Node가 하나도 없는 노드
-
Sibling (Brother Node): 동일한 Parent Node를 가진 노드
-
Depth: 트리에서 Node가 가질 수 있는 최대 Level
이진 트리 / 이진 탐색 트리 (Binary Search Tree)
- 이진트리: 노드의 최대 Branch가 2인 트리
- 이진 탐색 트리 (Binary Search Tree, BST): 이진 트리에 다음과 같은 추가적인 조건이 있는 트리
- 왼쪽 노드는 해당 노드보다 작은 값, 오른쪽 노드는 해당 노드보다 큰 값을 가지고 있음!
<이진 탐색 트리에 데이터 넣기>
class NodeMgmt:
def __init__(self, head):
self.head = head
def insert(self, value):
self.current_node = self.head
while True:
if value < self.current_node.value:
if self.current_node.left != None:
self.current_node = self.current_node.left
else:
self.current_node.left = Node(value)
break
else:
if self.current_node.right != None:
self.current_node = self.current_node.right
else:
self.current_node.right = Node(value)
break
<이진 탐색 트리 탐색>
class NodeMgmt:
def __init__(self, head):
self.head = head
def insert(self, value):
self.current_node = self.head
while True:
if value < self.current_node.value:
if self.current_node.left != None:
self.current_node = self.current_node.left
else:
self.current_node.left = Node(value)
break
else:
if self.current_node.right != None:
self.current_node = self.current_node.right
else:
self.current_node.right = Node(value)
break
def search(self, value):
self.current_node = self.head
while self.current_node:
if self.current_node.value == value:
return True
elif value < self.current_node.value:
self.current_node = self.current_node.left
else:
self.current_node = self.current_node.right
return False
다시 일상으로 돌아왔고,
정보처리기사 실기 준비하면서 도움이 되기를 바라며
또 열심히 자료구조 알고리즘 강의를 수강해야겠다.
익숙한 듯 낯선 자료구조...
[패스트캠퍼스 100% 환급 챌린지 미션 중입니다.]
'IT 개발 > Algorithm 알고리즘' 카테고리의 다른 글
[패스트캠퍼스 :: 코딩테스트 인강] 5주차 ① 힙 (Heap) (0) | 2021.03.19 |
---|---|
[패스트캠퍼스 :: 코딩테스트 인강] 4주차 ② 트리 / 이진 트리 (0) | 2021.03.14 |
[패스트캠퍼스 :: 코딩테스트 인강] 3주차 ② 해쉬 테이블 + 기초 문제풀이 (0) | 2021.03.05 |
[패스트캠퍼스 :: 코딩테스트 인강] 3주차 ① 해쉬 테이블 (0) | 2021.03.03 |
[패스트캠퍼스 :: 코딩테스트 인강] 2주차 ② 연결리스트/더블 링크드리스트 (0) | 2021.02.28 |