CH.개인기록 노트

C#은 처음이라

C# 트리,이진탐색트리(bst)

amckdgjs 2024. 3. 14. 15:34

트리(tree)

트리는 계층적인 자료를 나타내는 자료구조이다. 부모 노드가 여러 자식 노드들을 가질 수 있는 1대 다 구조임.

트리의 구성요소

Tree

  • 부모 : 루트(root)노드 방향으로 직접 연결된 노드
  • 자식 : 루트노드 반대 방향으로 직접 연결된 노드.
  • 뿌리(root) : 부모 노드가 없는 최상위의 노드. 트리당 하나만 존재함 
  • 가지(branch) : 부모노드와 자식 노드가 모두 있는 노드.트리의 중간에 존재한다
  • 길이 : 출발 노드에서 도착노드까지 거치는 수
  • 깊이 : 루트 노드부터의 길이
  • 차수 : 자식 노드의 개수

이진탐색트리(BinarySearchTree)

이진트리는 부모 노드가 자식 노드를 최대 2개까지 가질 수 있는 트리이다.

이진탐색트리는 이진속성, 탐색속성을 적용한 트리이다.

출처:https://www.mathwarehouse.com/programming/gifs/binary-search-tree.php#binary-search-tree-vs-sorted-array

탐색

위 그림처럼 루트 노드부터 시작하여 탐색하는 값과 비교한다. 루트값이 작은 경우 왼쪽자식노드로 이동하고 큰 경우라면 오른쪽으로 이동한다. 

삽입

삽입은 탐색과 비슷하다. 삽입할 값이 비교하는 값보다 작을 경우에는 왼쪽 자식노드로, 큰 경우 오른쪽 자식노드로 이동한다.

삭제

자식이 0개인 경우 부모노드의 자식노드를 null로 한다.

자식이 1개인 경우 삭제하는 노드의 부모와 지식을 연결 후 삭제한다.

자식이 2개인 경우 삭제하는 노드를 기준으로 오른쪽 자식 중 가작 작은값의 노드와 교체 후 삭제한다.

'C#은 처음이라' 카테고리의 다른 글

Unity 상태 패턴  (1) 2024.08.06
C# 리스트(List)  (0) 2024.03.13
C# 자료구조 (큐Queue)  (0) 2024.03.12
C# 자료구조(스택)  (0) 2024.03.12
C# 이벤트(Event)와 델리게이트(Delegate)  (0) 2024.03.11