본문 바로가기
Study/개념 정리

[Study] Tree

by chobbo 2024. 7. 18.

Tree란?

Tree란 비선형 자료구조로 노드(node)와 노드를 연결하는 간선(edge)들로 이루어져있다.

 

- 트리는 하나의 루트 노드를 갖는다.
- 루트 노드는 0개 이상의 자식 노드를 갖고 있다.
- 그 자식 노드 또한 0개 이상의 자식 노드를 갖고 있고, 이는 반복적으로 정의된다.
- 트리에는 사이클(cycle)이 존재할 수 없다.

 

 

Tree의 순회 방법

전위 순회

자신 -> 왼쪽 트리 -> 오른쪽 트리

 

중위 순회

왼쪽 트리 -> 자신 -> 오른쪽 트리

 

후위 순회

왼쪽 트리 -> 오른쪽 트리 -> 자신 

 

 

DFS와 BFS

DFS
깊이 우선 탐색
그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘
스택 사용, 재귀 함수 사용

def dfs(graph,v,visited):
   visited[v] = True

   for i in graph[v]:
      if not visited[i]:
         dfs(graph,i,visited)

dfs(graph,1,visited)

 


BFS
너비 우선 탐색
가까운 노드부터 탐색하는 알고리즘
큐 사용 -> 수행시간이 DFS보다 좋음 (시간복잡도 O(N))

from collections import deque

def bfs(graph,start,visited):
   queue = deque([start])
   visited[start] = True

   while queue:
      v = queue.popleft()
      for i in graph[v]:
         if not visited[i]:
            queue.append(i)
            visited[i] = True
   
bfs(graph,1,visited)
 

CT-Study/PART 2/Chapter 5, DFS&BFS.md at master · JeongEunJi1127/CT-Study

🔎 코딩테스트 공부 결과물 정리를 위한 저장소 . Contribute to JeongEunJi1127/CT-Study development by creating an account on GitHub.

github.com

 

 

행동 트리(Behaviour Tree)란?

 

 

'Study > 개념 정리' 카테고리의 다른 글

[Study] JSON과 직렬화  (0) 2024.07.22
[Study] Graph와 길찾기  (0) 2024.07.19
[Study] 최적화  (0) 2024.07.17
[Study] 코루틴  (0) 2024.07.16
[Study] MonoBehaviour와 Unity 생명주기  (0) 2024.07.15