이진트리 순회 트리내의 모든 노드를 특정 순서에 따라 한번씩 방문 하는 것 방문 순서 R: Moving Right Child

Slides:



Advertisements
Similar presentations
주요 내용 기본 용어 이진 트리(binary tree) 이진 탐색 트리(binary search tree)
Advertisements

자료구조: CHAP 7 트리(1) 순천향대학교 컴퓨터공학과 하 상 호.
1. 자료구조 개념 (1) 자료구조의 개요 1) 자료구조 ① 일련의 자료들을 조직하고 구조화하는 것 ② 자료의 표현과 그것과 관련된 연산 2) 자료구조에 따라 저장공간의 효율성과 프로그램의 실행시간이 달라짐 3) 어떠한 자료구조에서도 필요한 모든 연산들을 처리하는 것이.
Internet Computing KUT Youn-Hee Han
8. 파일 인덱스: 탐색트리 (Search Tree)
쉽게 풀어쓴 C언어 Express 제11장 포인터 C Express.
Chapter 7. Binary Search Trees - 보충 자료-
Internet Computing KUT Youn-Hee Han
제 8 장  파서 생성기 YACC 사용하기.
5장. 리스트 리스트 학습목표 목록이나 도표처럼 여러 데이터를 관리할 수 있는 자료형을 추상화
트리 이 현 직
자료구조론 9장 트리(tree).
6장 트리.
10장 정렬.
Internet Computing KUT Youn-Hee Han
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
쉽게 배우는 알고리즘 3장. 정렬Sorting
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
제5장 제어명령
CHAP 7:트리.
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 Slide 1 (of 50).
강의 #7 트리(Tree).
6장. printf와 scanf 함수에 대한 고찰
자료구조: CHAP 7(3) 트리 순천향대학교 컴퓨터공학과 하 상 호.
자료구조: CHAP 7 이진 탐색 트리 순천향대학교 컴퓨터공학과 하 상 호.
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
Chapter 9 – 구조형과 리스트 처리 Outline 9.1 자신 참조 구조형 9.2 선형 연결 리스트 9.3 리스트 연산
자료구조 김현성.
제 7 장. 트리(Tree).
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
25장. 메모리 관리와 동적 할당.
C언어 응용 제 10 주 트리.
1과목 데이터베이스 강사 이 민 욱.
1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용 4장 – 기하학적 객체와 변환
제 5 장 트 리 5.1 트리 5.2 이진 트리 5.3 스레드 이진 트리.
CHAP 7: 트 리 (1) 한 성 대 학 교 정보통신공학과 봉 정 식.
자료구조 과제 풀이(6,7,8차) Yong-hwan Kim
IT CookBook, 자바로 배우는 쉬운 자료구조
CHAP 8:우선순위큐 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
Tree & Heap SANGJI University Kwangman Ko
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
배열과 연결리스트 연결리스트 배열 메모리 할당이 연속적이어서 인덱스 사용시 검색이 빠르다.
C언어 응용 제10주 실습 해보기 제8장 트리.
Tree & Heap SANGJI University Kwangman Ko
CHAP 7:트리 C로 쉽게 풀어쓴 자료구조 생능출판사 2005.
Chapter 04 리스트.
제어문 & 반복문 C스터디 2주차.
기업윤리의 이슈 컴퓨터과학 김 은 철.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
Chapter 11. 배열과 포인터.
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
포인터.
조 병 규 Software Quality Lab. 한 국 교 통 대 학 교
CHAP 8:우선순위큐.
트리.
CHAP 12 : 탐색.
CHAP 12 : 탐색 C로 쉽게 풀어쓴 자료구조 생능출판사 2011.
18장. 다차원 배열 그리고 포인터.
생태면적율 ○ 정 의 - 공간계획 대상면적 중 자연의 순환기능을 가진 토양의 면적비율
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
탐색 선형 탐색, 이진 탐색, 이진 탐색 트리.
아두이노 프로그래밍 4일차 – Part1 모바일 로봇 강사: 김영준 목원대학교 겸임교수
제 5 장 탐색트리.
5차시: 로봇 주행 실습 및 미션 수행하기 준비물 SPL-Duino 보드 (조도센서 내장)
Chapter 07 트리.
간소함과 유용성을 위한 미술공예운동이 장식과 몰개성에서 집을 구하다!
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
자료구조 자료구조의 개요 배열 선형 리스트 스택 큐 트리.
[CPA340] Algorithms and Practice Youn-Hee Han
Presentation transcript:

이진트리 순회 트리내의 모든 노드를 특정 순서에 따라 한번씩 방문 하는 것 방문 순서 R: Moving Right Child L: Moving Left Child V: Visiting Node Inorder Traversal(중위 순회) LVR(RVL) Preorder Traversal(전위 순회) VLR(VRL) Postorder Traversal(후위순회) LRV(RLV)

이진트리 순회 중위 순회(inorder traversal) 1. 널 노드에 도달할 때까지 왼쪽 방향으로 이동 2. 널 노드에 도착하면 널 노드의 부모 방문 3. 순회는 오른쪽 방향으로 계속 4. 오른쪽으로 이동할 수 없을 때에는 바로 위 레벨의 방문하지 않은 노드에서 순회 계속 A B C E F G H D 1 2 3 6 4 void inorder(TreeNode *root){ /* 중위 트리 순회 */ if (root){ inorder(root->left); printf("%d ", root->data); inorder(root->right); } 5

이진트리 순회 중위 순회(inorder traversal) A B C E F G H D 1 2 3 6 4 5 IN(NULL){ return } IN(a의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(b의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(c의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(e의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(NULL){ return } IN(NULL){ return } IN(NULL){ return } IN(d의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(f의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(NULL){ return } IN(NULL){ return } A B C E F G H D 1 IN(NULL){ return } IN(g의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } IN(h의 주소){ IN(p->lchild); PF("%c ",p->data); IN(p->rchild); } 2 IN(NULL){ return } 3 6 4 IN(NULL){ return } 5

이진트리 순회 중위 순회(inorder traversal) 예 void inorder(TreeNode *root){ /* 중위 트리 순회 */ if (root){ inorder(root->left); printf("%c", root->data); inorder(root->right); } - * C Void main(){ TreeNode a, b, c, o1, o2; a.data='A'; a.left= a.right= NULL; b.data='B'; b.left= b.right= NULL; c.data='C'; c.left= c.right= NULL; o2.data= '*'; o2.left=&a; o2.right=&b; o1.data= '-'; o1.left=&o2; o1.right=&c; inorder(&o1); } A B

이진트리 순회 전위 순회(preorder traversal) 1. 노드를 먼저 방문 2. 왼쪽 가지의 모든 노드 방문 3. 널 노드에 도달하면 오른쪽 자식을 가진 가장 가까운 조상으로 돌아가서 오른쪽 자식에서 순회를 계속 A B C E F G H D 1 2 3 6 4 5 void preorder(TreeNode *root){ /* 전위 트리 순회 */ if (root){ printf("%d", root->data); preorder(root->left); preorder(root->right); }

이진트리 순회 전위 순회(preorder traversal) A B C E F G H D PR(NULL){ return } PR(a의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(b의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(c의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(e의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(NULL){ return } PR(NULL){ return } PR(NULL){ return } PR(d의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(f의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(NULL){ return } PR(NULL){ return } A B C E F G H D 1 PR(NULL){ return } PR(g의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } PR(h의 주소){ PF("%c ",p->data); PR(p->lchild); PR(p->rchild); } 2 PR(NULL){ return } 3 6 4 IN(NULL){ return } 5

이진트리 순회 후위 순회(postorder traversal) 1. 노드를 방문하기 전에 두 자식을 먼저 방문노드 보다 그 노드의 자식이 먼저 출력 A B C E F G H D 1 2 void postorder(TreeNode *root){ if (root){ postorder(root->left); postorder(root->right); printf("%c ", root->data); } 3 6 4 5

이진트리 순회 후위 순회(postorder traversal) PR(NULL){ return } A B C E F G H D PR(a의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(b의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(c의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(e의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(NULL){ return } PR(NULL){ return } PR(NULL){ return } PR(d의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(f의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(NULL){ return } PR(NULL){ return } A B C E F G H D 1 PR(NULL){ return } PR(g의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } PR(h의 주소){ PR(p->lchild); PR(p->rchild); PF("%c ",p->data); } 2 PR(NULL){ return } 3 6 4 IN(NULL){ return } 5