Kimsora✨
article thumbnail
Published 2022. 12. 14. 13:15
[자료구조]Tree 알고리즘
320x100
반응형

트리는 노드로 이루어진 재귀적 자료 구조이다

 이터를 순차적으로 저장하지 않기 때문에 비선형 자료구조이다

트리는 하나의 루트 노드를 갖는다.

노드(node)들과 노드들을 연결하는 간선(edge)들로 구성되어 있다

노드가 n개인 트리는 항상 n-1개의 간선(edge)을 가진다

트리에는 사이클(cycle)이 존재할 수 없다.
노드들은 특정 순서로 나열될 수도 있고 그럴 수 없을 수도 있다.
각 노드는 부모 노드로의 연결이 있을 수도 있고 없을 수도 있다.
각 노드는 어떤 자료형으로도 표현 가능하다.

 

 

Node LinkedList와 비슷하게 tree에도 node가 존재한다. 각 node는 데이터를 포함하고 있다

Parent(부모)
 Child(자식)
부모노드는 다수의 자식 노드를 가지고 있을수 있다  하지만 자식 노드는 하나의 부모만 가진다

루트 노드(Root)  트리에 가장 상단에 위치한 노트 이다
부모가 없고 트리는 하나의 루트 노드만을 가진다
단말 노드(Leaf) 자식이없는 노드입니다. 트리에 가장 끝부분에 위치한다
노드의 크기(Size) 자신을 포함한 자식 노드의 수 Size = 6

노드의 깊이(Depth) 루트에서 특정노드 까지 도달하는데
거쳐야하는 간선의 수
B의 깊이 1
E의 깊이 2

노드의 레벨(Level) 트리에 특정 깊이를 가진 노드의 집합 A의 레벨 1
B와 C의 레벨 2
D E F 레벨 3
노드의 차수(Degree) 각 노드가 가진 가지의 수 B의 차수: 3
A의 차수 2
트리의 차수 트리의 최대 차수 B가 가장 많은 가지수를 가지고있기
때문에 트리의 차수는 3


트리의 높이 루트 높이에서 가장 깊이있는 노드의 깊이

이진 트리(Binary tree)

자식 노드가 최대 두 개인 노드들로 구성된 트리

두 개의 자식 노드는 왼쪽 자식 노드와 오른쪽 자식 노드로 나눌 수 있다

이진 트리는 자료의 삽입, 삭제 방법에 따라 정 이진 트리(Full binary tree), 완전 이진 트리(Complete binary tree), 포화 이진 트리(Perfect binary tree)로 나뉜다

  • 포화 이진 트리(full binary tree) : 각 레벨에 노드가 꽉 차 있는 이진 트리로, 각 노드에 레벨 단위로 왼쪽에서 오른쪽으로 번호를 붙일 수 있다. 부여된 번호는 항상 일정하다.
  • 완전 이진 트리(complete binary tree) : 높이가 k일 때, 레벨 1부터 k-1까지는 노드가 채워져 있고, 마지막 레벨 k에서는 왼쪽부터 오른쪽으로 노드가 순서대로 채워져 있는 이진 트리로, 마지막 레벨에서는 노드가 꽉 차 있지 않아도 되지만, 중간에 빈 곳이 있으면 안 된다.
  • 정 이진 트리(Full binary tree) : 각 노드가 0개 혹은 2개의 자식 노드를 가진다
  • 기타 이진 트리

 

 

 

이진 탐색 트리(Binary Search Tree)

 

이진 탐색 트리란 이진 탐색(binary search)과 연결 리스트(linked list)를 결합한 이진트리를 말한다

이진 탐색의 효율적인 탐색 능력을 유지하면서도, 빈번한 자료 입력과 삭제가 가능하다.

  • 각 노드에 중복되지 않는 키(Key)가 있다
  • 루트노드의 왼쪽 서브 트리는 해당 노드의 키보다 작은 키를 갖는 노드들로 이루어져 있다
  • 루트노드의 오른쪽 서브 트리는 해당 노드의 키보다 큰 키를 갖는 노드들로 이루어져 있다
  • 좌우 서브트리도 모두 이진 탐색 트리여야 한다

이진 탐색 트리(Binary Search Tree)모든 왼쪽 자식의 값이 루트나 부모보다 작고, 모든 오른쪽 자식의 값이 루트나 부모보다 큰 값을 가지는 특징이 있다

 

 

1. 중위 순회: 루트 노드의 왼쪽 자식 노드를 먼저 방문 후에 루트 노드를 중간에 방문하는 방식

2. 후위 순회: 루트 노드의 왼쪽 자식, 오른쪽 자식을 방문 후 루트 노드를 마지막에 방문하는 방식

3. 전위 순회: 루트 노드를 먼저 방문 후 왼쪽 자식, 오른쪽 자식을 방문하는 방식

 

 

 

728x90
반응형

'알고리즘' 카테고리의 다른 글

다익스트라 (Dijkstra)  (6) 2023.03.31
기수정렬 (Radix Sort)  (6) 2023.03.23
Greedy Algorithm/Dynamic Programming  (2) 2022.12.09
시간복잡도/공간복잡도  (0) 2022.12.09
정렬 알고리즘  (0) 2022.11.30
profile

Kimsora✨

@sorarar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그

WH