컴퓨터 프로그래밍 공부/자료구조와 알고리즘

Tree

게임 개발 2024. 4. 28. 18:00
Tree + (heap)

 

 

 

트리는 매우 중요한 자료구조 중 하나이다.

연결리스트는 노드들이 한 줄로 연결된 선형적인 자료구조인 반면

트리는 부모 - 자식 관계를 계층적으로 표현한 보다 일반적인 자료구조이다.

 

추상적으로 표현하면 연결 리스트처럼 데이터를 저장하고 있는 노드와 노드를 연결하는 에지(또는 링크)로 구성된다.

연결 리스트와 차이점은 에지가 부모 - 자식 관계를 표현한다는 점에서 차이가 있다.

 

트리 용어

 

부모노드 / 자식노드 : 부모노드는 자식 노드를 위에 있는 노드를 말한다.

자식 노드는 1이상의 레벨을 가지는 노드로 부모노드 밑에 있는 노드이다.

 

조상노드 / 자손노드 : 트리 노드간의 레벨간의 관계가 2이상 차이나는 노드를 말한다.

보다 아래면 자손노드 보다 위면 조상노드라고 한다.

 

루트노드 : 모든 노드의 조상 노드를 말한다. 

가장 최상위 계층의 노드로 0단계 노드를 말한다.

 

리프 노드 : 자식이 없는 노드를 말한다. 

leaf에서 따온 것으로 잎사귀같이 더 이상 뻗어나가는 노드가 없는 것을 뜻한다.

 

레벨 노드 : 루트 노드의 레벨 0를 시작으로 한 세데씩 내려가면서 1씩 증가한다.

 

깊이 (depth) : 루트에서 다른 노드를 연결하는 에지 개수 (노드 5의 깊이 = 4)

 

경로 (path) : 두 노드 사이를 연결하는 에지의 시퀀스를 말한다.

 

높이 (height) : 노드의 높이는 자식 노드까지의 가장 큰 깊이를 말한다.

 

트리 높이 : 루트 노드의 높이가 트리 높이와 같다.

 

분지수(degree) : 노드의 분지수는 자신의 자식 수이며,

트리의 분지수는 가장 큰 분지수로 결정된다.

 

부트리 (subtree) : 어떤 노드와 그 노드의 자손노드들로 구성된 부분 트리

 

 

이진 트리(Binary tree) 정의와 표현법

 

이진트리 :

모든 노드의 자식이 2개를 넘지 않는 트리

실제 자료구조에서 사용되는 트리는 이진트리가 대부분이다..

 

힙 :

특별한 성질을 갖고 있는 이진트리 중 하나로,

최대 값 ( 또는 최소 값)을 빠르게 찾을 수 있는 이진트리 자료구조

 

 

'컴퓨터 프로그래밍 공부 > 자료구조와 알고리즘' 카테고리의 다른 글

우선순위 큐  (0) 2024.06.06
동적 계획법 (1)  (0) 2024.05.18
삽입 정렬 구현  (0) 2024.04.21
선택 정렬 구현  (0) 2024.04.18
원형 리스트  (0) 2024.04.17