이진 트리

2024. 6. 17. 04:18 · Algorithm/[C] Do it! 자료구조와 함께 배우는 알고리즘

이진트리

자식 노드가 최대 2개씩인 이진 트리

 

이진 검색 트리 / 이진 탐색 트리

루트 노드를 기준으로 왼쪽 서브트리들은 루트노드 값보다 작고, 오른쪽 서브트리들은 루트노드 값보다 크다.

 

이진 탐색 트리의 최솟값

  • 트리의 가장 왼쪽에 존재

이진 탐색 트리의 최대값

  • 트리의 가장 오른쪽에 존재

순회 ( = 모든 노드들을 한 번씩 방문하는 것)

  • 전위 순회
    • 루트 노드부터 값 출력
    • 중앙 -> 왼쪽 -> 중앙 -> 오른쪽

  • 중위 순회
    • 가장 왼쪽 밑의 노드에서 시작하여 값 출력
    • 왼쪽 -> 중앙 -> 오른쪽
    • 값 출력 : 낮음 -> 높음 순서대로 결과가 나온다. 

  •   후위 순회
    • 가장 왼쪽 밑의 노드에서 시작하여 값 출력
    • 왼쪽 -> 오른쪽 -> 중앙

이진트리 장점

  • 삽입 삭제 유연
  • 삽입/ 삭제/ 검색이 빠르다
  • 값의 순서대로 순회 가능하다

이진트리 단점

  • 구조적으로 한쪽으로 편향되면 수행시간이 길어진다.

이진트리 시간 복잡도

  • Best : O(1)
  • Worst : O(N)



노드의 후임자 / 선임자

 

  • 후임자
    • 해당 노드보다 값이 큰 노드들 중에서 가장 값이 작은 노드
    • 20의 후임자 : 30
    • 17의 후임자 : 20
    • 10의 후임자 : 15
  • 선임자
    • 해당 노드보다 값이 작은 노드들 중에서 가장 큰 값
    • 20의 선임자: 17
    • 10의 선임자 : 5
    • 40의 선임자: 30

 

완전 이진 트리

왼쪽부터 모두 채워져있고, 마지막 레벨을 제외하고 다 채워져 있을때

 

포화 이진 트리 perfect

완벽한 삼각형 구조

 

트리 관련 용어 정리

  • 루트 노드 : 맨 위 노드
  • 디그리 / 차수 : 각 노드에서 나온 가지수 ( = 자식 수)
  • 단말노드 / 잎노드 / 리프노드 : 자식 노드가 없는 모든 노드
  • 비단말노드 / 내부노드 : 자식 노드가 있는 모든 노드
  • 조상노드 : 내 노드보다 위에 노드x
  • 자식노드 : 내 밑에 아가 노드들
  • 노드의 크기 : 자신 포함 자손 노드 갯수
  • 노드의 깊이 : 루트 노드에서 해당 노드까지의 간선 갯수
  • 레벨 : 0레벨 1레벨 2레벨..
  • 서브 트리 : 큰 트리 안에 있는 서브 트리
  • 트리의 높이 : 루트 노드 에서 리프노드의 간선 개수

 

 

 

 

728x90

'Algorithm > [C] Do it! 자료구조와 함께 배우는 알고리즘' 카테고리의 다른 글

시간복잡도 2 (ing)  (0) 2024.09.04
알고리즘 중간 정리  (0) 2024.04.30
3-3장 검색 알고리즘 - 복잡도 (3/5)  (0) 2024.04.30
4-1장 스택과 큐 - 큐 Queue (ing)  (1) 2024.04.15
4-1장 스택과 큐 - 스택 Stack  (2) 2024.04.15
'Algorithm/[C] Do it! 자료구조와 함께 배우는 알고리즘' 카테고리의 다른 글
  • 시간복잡도 2 (ing)
  • 알고리즘 중간 정리
  • 3-3장 검색 알고리즘 - 복잡도 (3/5)
  • 4-1장 스택과 큐 - 큐 Queue (ing)
따`ddah
따`ddah
    250x250
  • 따`ddah
    IT's ddah
    따`ddah
  • 관리    글쓰기
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Projects
        • Auto Post : SNS 자동 업로더
      • kmooc
        • 기계 학습 기반의 데이터 공학
      • Algorithm
        • [C] Do it! 자료구조와 함께 배우는 알고리..
        • 알고리즘 스터디
        • 코딩 테스트
      • Basic
        • 운영체제 OS
        • 컴퓨터구조
        • 소프트웨어공학 (UML)
      • DBMS
        • 데이터베이스 이론
        • MySQL
        • Oracle SQL
        • BigQuery
        • Yammer
      • Programming
        • Python
        • C
        • Java
        • React
        • JavaScript
        • R
      • 빅데이터
      • AI
        • 멀티미디어응용
        • 머신러닝
        • 인공지능
      • 자격증
        • Azure DP-900
        • Azure AI-900
        • SQLD
        • CSTS
      • 대외활동 및 인턴
        • 인턴
        • LG Aimers
        • Outta
        • 빅데이터 분석 학회 BDA
        • 세계시민교육연구소 청년단 GYIA
      • Tool
        • Git
        • IDE
      • 도서
        • IT
      • 그 외
        • 단축키
        • ✞
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    리액트
    주석
    대학생학회
    python
    빅데이터분석
    dbms
    파이썬 챗봇 만들기
    티스토리챌린지
    취업준비
    print(f"")
    jsx
    취업
    input
    파이썬{}
    오라클SQL
    자료형
    importturtle
    자바스크립트
    sql
    Py
    Oracle
    BDA학회
    AI역량검사
    대외활동
    이름나이
    js
    react
    오블완
    javascript
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
따`ddah
이진 트리
상단으로

티스토리툴바