CS/Data Structure

    [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..