CS

    [python] 이진 탐색 트리 (binary Search tree) - 2. 탐색

    [python] 이진 탐색 트리 (binary Search tree) - 2. 탐색

    📗 이진 트리 (binary Search tree) 🔵 이진 탐색 트리 탐색 [python] 이진 탐색 트리 (binary Search tree) - 1. 클래스 정의, 초기화, 노드 추가 📗 이진 트리 (binary Search tree) 🔵 이진 탐색 트리 클래스 정의 및 초기화 먼저 Node 클래스를 정의해 보자. Node 클래스는 노드값인 self.val 와 왼쪽 노드 self.left 오른쪽 노드 self.right 의.. deok2kim.tistory.com 🔺 클래스 정의 및 초기화는 앞에서 다뤘다. 이진 탐색 트리에 찾고자하는 값이 있는지를 확인하는 것이다. 값이 있으면 True, 없으면 False를 반환한다. 맨 위의 이미지를 보면 원하는 값인 27을 찾는 과정이다. 먼저 최상위 노드인 ..

    [python] 이진 탐색 트리 (binary Search tree) - 1. 클래스 정의, 초기화, 노드 추가

    [python] 이진 탐색 트리 (binary Search tree) - 1. 클래스 정의, 초기화, 노드 추가

    📗 이진 트리 (binary Search tree) 🔵 이진 탐색 트리 클래스 정의 및 초기화 먼저 Node 클래스를 정의해 보자. Node 클래스는 노드값인 self.val 와 왼쪽 노드 self.left 오른쪽 노드 self.right 의 속성을 가진다. 초기화 시 Node값만 주어지고 왼쪽, 오른쪽 노드는 비어있다. - 노드 구성 # 노드 만들기 # A(val) # / \ # B(left) C(right) class Node: def __init__(self, item): self.val = item self.left = None self.right = None Node 클래스를 만들었다면, BinaryTree 를 만들어보자. 처음에는 Node의 값이 없는, 노드 하나를 가진 트리로 초기화한다. -..

    [python] 이진 트리 (binary tree) - 개념 정리

    [python] 이진 트리 (binary tree) - 개념 정리

    📗 이진 트리 (binary tree) 이진트리란 최대 두 개의 자식(없을 수도 있음)을 가지는 트리 형태의 자료구조이다. 탐색을 하거나 정렬을 하는데 있어 매우 효율적으로 사용된다. 탐색의 시간복잡도는 평균적으로 O(logn) 이다. 🔵 이진 탐색 트리(binary search tree) 이진 탐색 트리는 이진 트리의 하나이다. 노드에 대해서 왼쪽 자식의 값은 노드의 값보다 작거나 같고, 오른쪽 자식은 노드의 값보다 크다. 아래의 그림을 보면 [21, 28, 14, 32, 25, 18, 11, 30, 19, 15]의 순서대로 이진 탐색 트리를 구현하는 과정을 나타내고 있다. 가장 처음의 값은 root 노드가 되고, 다음 값부터 노드와의 대소 비교관계에 따라 위치를 결정한다. 🔵 이진 탐색 트리 Sear..

    최소 신장 트리(Minimum Spanning Tree)

    최소 신장 트리(Minimum Spanning Tree)

    그래프에서 최소 비용을 구하는 문제 1. 모든 정점을 연결하는 간선들의 가중치합이 최소가 되는 트리 - 프림과 크루스칼 두가지 형태가 있다. (프림은 정점을 기준으로, 크루스칼은 간선을 기준으로 MST를 만들어간다.) 2. 두 정점 사이의 최소 비용 경로 찾기 - BFS에서 가중치가 추가된 형태 신장 트리 1. n 개의 정점으로 이루어진 무방향 그래프에서 n 개의 정점과 n-1 개의 간선으로 이루어진 트리 최소 신장 트리 1. 무방향 가중치 그래프에서 신장 트리를 구성하는 간선들의 가중치의 합이 최소인 신장 트리 그래프의 표현 1. 인접 행렬 2. 인접 리스트 🟨 프림 알고리즘: 프림 알고리즘은 하나의 정점에 연결된 간선중 가중치가 최소인 정점을 선택한다. 하나의 정점에서 연결된 간선들 중에 하나씩 선택..