이진 트리 순회
이진 트리의 순회 방법
전위순회 : 루트 노드를 먼저 순회
중위순회 : 루트 노드를 중간에 순회
후위순회 : 루트 노드를 마지막에 순회
순회의 재귀적 표현
세 가지 순회의 방법을 재귀적으로 구현하면 높으가 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
'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 |