이 영역을 누르면 첫 페이지로 이동
컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

페이지 맨 위로 올라가기

컴퓨터와 수학, 몽상 조금

컴퓨터공학, 딥러닝, 수학 등을 다룹니다.

10. 트리의 응용과 구현

  • 2020.06.24 16:57
  • 학부 수업/자료구조
반응형

수식 표현

수식 트리는 수식을 표현하는 이진트리이다. $(2\times (a-1)/(3+b))$를 표현한 수식 트리는 다음과 같다.

수식의 평가를 위한 코드는 아래와 같다.
수식 평가는 후위순회를 이용한다.

def evaluate(v):
	if isExternal(v):
    	return elem(v)
    else
    	x = evaluate(left(v))
        y = evaluate(right(v))
        op = elem(v)
        return x op y

트리의 깊이와 높이 구하기

노드 v의 깊이(Depth)는 v가 루트일 때 0부터 시작한다.

def depth(v):
	if isRoot(v):
    	return 0
    else:
    	return 1+depth(parent(v))

노드 v의 높이(Height)는 v가 leaf 노드일 때 0부터 시작한다.

def height(v):
	if isExternal(v):
    	return 0
    else
    	h = max(height(leftChild(v)), height(rightChild(v)))
        return h+1

연결 트리 구현 ver. 1

각 노드는 다음을 저장한다.

  • 원소
  • 부모노드의 주소
  • 자식노드들의 리스트

루트노드는 부모노드를 저장하지 않는다.

연결 트리 구현 ver. 2

각 노드는 다음을 저장한다.

  • 원소
  • 부모노드
  • 첫째 자식노드
  • 바로 아래의 동생노드 (즉, 다음 형제노드)

트리의 함수 성능

작업 이진트리 (배열, 연결리스트) 트리
size, isEmpty 1 1
root, parent 1 1
children(v) 1 자식 갯수만큼
leftChild, rightChild 1 없음
isInternal, isExternal, is Root 1 1
setElement, swapElement 1 1

 

반응형

'학부 수업 > 자료구조' 카테고리의 다른 글

9. 트리 ADT (Tree)  (0) 2020.06.05
8. 큐, 디큐 ADT (Queue, Dequeue)  (0) 2020.05.29
7. 스택 ADT  (0) 2020.05.14
6. 집합 ADT  (0) 2020.05.09
5. 리스트의 그룹과 공유  (0) 2020.04.23

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • 9. 트리 ADT (Tree)

    9. 트리 ADT (Tree)

    2020.06.05
  • 8. 큐, 디큐 ADT (Queue, Dequeue)

    8. 큐, 디큐 ADT (Queue, Dequeue)

    2020.05.29
  • 7. 스택 ADT

    7. 스택 ADT

    2020.05.14
  • 6. 집합 ADT

    6. 집합 ADT

    2020.05.09
다른 글 더 둘러보기

정보

컴퓨터와 수학, 몽상 조금 블로그의 첫 페이지로 이동

컴퓨터와 수학, 몽상 조금

  • 컴퓨터와 수학, 몽상 조금의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (276)
    • Tech Trend (3)
    • Deep Learning (77)
      • 공부 노트 (21)
      • 논문 리뷰 (44)
      • 논문 스키밍 (1)
      • 영상처리 (11)
    • Engineering (3)
      • Tips (2)
      • Experiences (1)
    • Blog (42)
      • 회고 & 계획 (16)
      • 내 이야기 (8)
      • 리뷰 (3)
      • 군대에 간 공돌이 (9)
      • ML엔지니어 취업 도전기 (1)
      • 여행 (4)
    • 학부 수업 (141)
      • 머신러닝 (16)
      • C프로그래밍 (8)
      • 자료구조 (11)
      • 알고리즘 (17)
      • 디지털시스템 (25)
      • 컴퓨터구조 (11)
      • 확률과 통계 (21)
      • 선형대수학 (14)
      • 이산수학 (18)
      • 데이터시각화 (0)
    • 강의 (9)
      • 딥러닝 기초 (7)
      • Python (2)

공지사항

인기 글

정보

백지오의 컴퓨터와 수학, 몽상 조금

컴퓨터와 수학, 몽상 조금

백지오

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
반응형

나의 외부 링크

  • profile
  • github
  • linkedin

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. © 백지오. Designed by Fraccino.

티스토리툴바