재귀함수
나 자산을 또 호출하는 함수
반복적으로 실행함
그래서 재귀 함수 만들 때!
1. recurrence relation 점화식
2. base case
꼭있어야함.
점화식으로 계속 반복되고
그 반복이 base case에 도달하면 재귀함수가 끝이 남.
base case가 없으면 무한루프되므로 주의!
Tree 개념
노드: 트리는 보통 노트로 구현
차수degree 각노드가 갖는 자식의 수
모든 노드의 차수가 N개 이하인 트리를 n진 트리라 한다.
Binary Tree 이진트리
차수가 2진 이하
이 노드들의 구성 요소:
value값 저장, left child 주소값 저장, right child wnthrkqt wjwkd
코드로 구현시:
1. 이렇게 구현된 노드생성
2. binary Tree 구성
트리 순회Traversal (= 트리탐색, 완전탐색)
트리의 각 노드를 방문하는 과정을 말함
모든 노드를 한번씩 방문해야해서 순회 방법으로는
너비우선탐색의 BFS Breadth-First Search
깊이우선탐색의 DFS Depth-First Search
BFS
root기준으로 탐색. 아래로 level 0, level1 이렇게 가까운것부터 탐색
순회해서 그 노드에 "방문한다"
->
그 노드에 접근하는 것은 언제든 할 수 있음.
근데 "방문"은 그노드에 접근해서 "어떤 작동을 시키는 것"
트리순회에서 그냥 접근하는 것과 방문하는 것은 다름!
DFS
스택 반복문으로도 만들 수 있고
재귀로도 만들 수 있음.
DFS는 접근 어떻게 할지 생각하고 방문 어떻게 할지 생각.
접근을 재귀로 한다.
방문은 순회 종류에 따라 다른데
전위순회 preorder
자식노드들에게 가기 전에 일단 자기 자신 방문(기록을 하든 뭘하든..)먼저함.
중위순회 inorder
나 자신을 방문하는게 중간에 있음
후위순회 postorder
자식들 다 방문하고 나서 자기 자신 방문
'코딩테스트 > 백준' 카테고리의 다른 글
그래프와 DFS(재귀함수, 스택으로 구현)와 BFS(큐로 구현) - 파이썬 코드 (2) | 2023.05.26 |
---|---|
for문과 while차이점 (0) | 2023.05.15 |
파이썬 = , == , elif (0) | 2023.05.15 |
해시테이블 Hash table (0) | 2023.04.23 |
파이썬 자료구조 linked list (개발남노씨 코테 인강 필기) (0) | 2023.04.23 |