Tree

  • 데이터 사이의 계층 관계 표현
  • 노드 와 가지 로 구성
  • 루트 : 트리의 가장 위쪽에 있는 노드
  • 리프 : 가장 아래쪽에 있는 노드
  • 자식 : 어떤 노드와 가지가 연결되었을 때 아래쪽에 있는 노드
  • 부모 : 어떤 노드와 가지가 연결되었을 때 위쪽에 있는 노드
  • 형제 : 부모가 같은 노드
  • 자손 : 어떤 노드에서 아래쪽으로 가지를 따라가면 만나는 모든 노드
  • 레벨 : 루트에서 얼마나 멀리 떨어져 있는지를 나타낸다
  • 차수 : 각 노드가 갖는 자식의 수
  • 높이 : 루트에서 가장 멀리있는 리프까지의 거리
  • 서브트리 : 어떤 노드를 루트로 하고 그 자손으로 구성된 트리

노드 스캔 방법

  • 너비 우선 검색(breadth first search)
  • 깊이 우선 검색(depth first search)

이진 검색 트리

  • 노드가 왼쪽 자식과 오른쪽 자식만을 갖는 트리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from __future__
from typing import Any,Type

class Node:
    def __init__(self,key: Any, value: Any, left: Node = None,right: Node = None):
        self.key = key
        self.value = value
        self.left = left
        self.right = right

class BinarySearchTree:
    def __init__(self):
        self.root = None

    def search(self,key: Any) -> Any:
        p = self.root
        while True:
            if p is None:
                return None
            if key == p.key:
                return p.value
            elif key < p.key:
                p = p.left
            else:
                p = p.right

태그:

카테고리:

업데이트: