본문 바로가기
C/자료구조

이진 트리 순회

by Glory_Choi 2022. 6. 2.
반응형

이진 트리 순회

 

이진 트리의 순회 방법

전위순회 : 루트 노드를 먼저 순회

중위순회 : 루트 노드를 중간에 순회

후위순회 : 루트 노드를 마지막에 순회

 

순회의 재귀적 표현

세 가지 순회의 방법을 재귀적으로 구현하면 높으가 2이상인 트리도 순회 가능

 

중위순회 함수

void InorderTraverse(BTreeNode* bt)

{

if (bt == NULL)

return;

 

InorderTraverse(bt->left);

printf("%d \n", bt->data);

InorderTraverse(bt->right);

}

 

__BinaryTreeTraverseMain.c

 

#include <stdio.h>

#include "BinaryTree.h"

 

void InorderTraverse(BTreeNode* bt)

{

if (bt == NULL) //

return;

 

InorderTraverse(bt->left); //재귀를 사용하여 중위 순회

printf("%d \n", bt->data);

InorderTraverse(bt->right);

}

 

int main(void)

{

BTreeNode* bt1 = MakeBTreeNode(); //노드 생성

BTreeNode* bt2 = MakeBTreeNode();

BTreeNode* bt3 = MakeBTreeNode();

BTreeNode* bt4 = MakeBTreeNode();

 

SetData(bt1, 1); //데이터 저장

SetData(bt2, 2);

SetData(bt3, 3);

SetData(bt4, 4);

 

MakeLeftSubTree(bt1, bt2); //왼쪽 서브트리 연결

MakeRightSubTree(bt1, bt3); //오른쪽 서브트리 연결

MakeLeftSubTree(bt2, bt4); //왼쪽 서브트리 연결

 

InorderTraverse(bt1); //중위순회 함수 호출

 

https://glorychoi.tistory.com/15

 

이진 트리(Binary Tree)

이진 트리란? 루트 노드를 중심으로 두 개의 서브 트리로 나뉘어 짐. 나뉘어진 두 서브 트리도 모두 이진 트리. 노드가 위치 할 수 있는 곳에 노드가 존재하지 않으면, 공집합 노드가 존재하는 것

glorychoi.tistory.com

 

 

 

//출처 윤성우의 열혈 자료구조

 

반응형

'C > 자료구조' 카테고리의 다른 글

이진 트리(Binary Tree)  (0) 2022.06.01
Tree(트리)  (0) 2022.06.01
ArrayList (배열 기반 리스트)  (0) 2022.05.30
재귀  (0) 2022.05.29
자료 구조  (0) 2022.05.29