이진탐색트리 (BST)

2021. 9. 5. 02:46·2-2/파이썬, 자료구조
목차
  1. 이진 탐색 알고리즘
  2. 이진 탐색 트리

이진 탐색 알고리즘

= 정렬된 데이터로 된 리스트에서 찾고자 하는 데이터가 있는지 알아보는 알고리즘 (리스트를 인수로 받음)

if 모든 요소 순회 -> O(n) !! 노답

이진 -> O(log n) !! 굳

 

방식: 중간값과 타깃을 비교 -> 중간값이 크면 좌측으로이동해서 또 중간값비교 이거계속

그래서 결국 중간값=타깃 되면 그 인덱스 리턴

*리스트는 정렬되어있다고 가정

 

이진 탐색 트리

(데이터 삽입,  삭제, 탐색 모두 빠른거 !!)

이진트리 -> 특별한 형태의 연결리스트. 부모는 두 자식의 참조를 가지고 있고, 자식은 부모의 참조를 가지고 있음

 

이진탐색트리는

노드에 데이터 직접 저장 x , 데이터에 대한 참조만 저장함

중요한 것은 데이터가 아니라, 이 데이터의 참조를 저장하고 있는 노드를 나타내는 키!

 

이진 탐색 트리의 정의

  1. 모든 키는 유일
  2. 어떤 노드를 특정했을 때, 이 노드의 키 값은 왼쪽 서브트리의 그 어떤 키보다 큼 (걍 한 키는 무조건 왼쪽보다 큼)
  3. 어떤 노드를 특정했을 때, 이 노드의 키 값은 오른쪽 서브트리의 그 어떤 키보다 작음
  4. (재귀적 정의) 노드의 서브트리도 이진탐색트리입니다 (당연)

< | < 이렇게 외우면 됩니다. 해당노드의 서브애들기준 < | < 이러캐 !!

 

함수들

  •  prev : 해당 노드의 키보다 하나 작은거 찾는 함수

* 현재 노드가 왼쪽 자식이 없을 때, 부모의 오른쪽 자식이 현재노드입니다 = 부모노드가 현재노드의 이전노드다 !

(무조건 prev 요소임 ! 왜냐면 그부모노드< 현재노드&현재노드의 서브 , 현재노드<현재노드의 서브! (왼쪽자식없으니까) -> 부모<현재<현재서브! 당연 ~)

 

-왼쪽 자식이 잇다 -> 왼쪽자식에서 가장 큰애 골라오면 됨 (현재노드의 왼쪽애들은 다 현재노드보다 작으므로, 걍 max 함수 쓰면 됨)

-왼쪽 자식이 없다 -> 부모의 오른쪽자식이 현재노드면 그 부모가 prev ! 계속올라가면서 부모가 오른쪽 자식 갖을 때 그 부모 구하면됨

   -> while문은 부모의 left가 현재노드면 계속해서 올라가도록 함 !! 그러다가 right찾으면 while문 끝 !

 

  • next : 그냥 prev 반대로 하면 됩니다

 

 

 

'2-2 > 파이썬, 자료구조' 카테고리의 다른 글

트리  (0) 2021.09.04
그래프  (0) 2021.09.03
덱  (0) 2021.09.03
큐  (0) 2021.09.03
스택  (0) 2021.09.03
  1. 이진 탐색 알고리즘
  2. 이진 탐색 트리
'2-2/파이썬, 자료구조' 카테고리의 다른 글
  • 트리
  • 그래프
  • 덱
  • 큐
jen.dev
jen.dev
🪽🪽🪽
  • jen.dev
    ㅇTL
    jen.dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (68)
      • 2-2 (25)
        • 파이썬, 자료구조 (11)
        • 데베시 (3)
        • 컴퓨터 네트워크 (2)
        • 알고리즘 (7)
        • 시스템 프로그래밍 (2)
      • 2-1 (28)
        • 객체지향 - java (14)
        • 자료구조 (c) (14)
      • draft (13)
        • swift (4)
        • html, javascript (8)
        • 리액트네이티브 (0)
        • 주절주절 (1)
        • 빅데이터 (0)
      • life (1)
      • Database (1)
      • Project-Doggy (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jen.dev
이진탐색트리 (BST)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.