반응형
C 언어를 이용하여 트리(Tree)를 구현하는 방법은 여러 가지가 있습니다.
트리 구조는 많은 종류가 있으며, 여기서는 이진 트리(Binary Tree)를 구현하는 예제입니다.
이진 트리는 각 노드가 최대 두 개의 자식 노드를 가지는 트리입니다.
먼저, 이진 트리의 간단한 구조를 정의해 보겠습니다. 각 노드는 데이터와 두 개의 포인터(왼쪽 자식 노드 및 오른쪽 자식 노드를 가리키는 포인터)로 구성됩니다.
아래는 이진 트리의 구조를 정의한 C 코드입니다.
#include <stdio.h>
#include <stdlib.h>
// 이진 트리 노드 구조체 정의
struct TreeNode {
int data;
struct TreeNode* left;
struct TreeNode* right;
};
// 새로운 노드를 생성하는 함수
struct TreeNode* createNode(int data) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
if (newNode == NULL) {
printf("메모리 할당 오류\n");
exit(1);
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
int main() {
// 트리 노드 생성
struct TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 이진 트리 출력
printf("이진 트리:\n");
printf(" 1\n");
printf(" / \\ \n");
printf(" 2 3\n");
printf(" / \\ \n");
printf("4 5\n");
return 0;
}
반응형
'C_C++' 카테고리의 다른 글
(C언어) 이진 탐색 트리(BTS, Binary Search Tree)에서 노드의 삽입 삭제 검색 (0) | 2023.11.08 |
---|---|
(C언어) 연결 리스트(linked list)를 이용한 스택(stack) 구현하기 (0) | 2023.11.04 |
(C언어) 이중 연결리스트( Doubly Linked List): 노드 추가 삭제 (0) | 2023.10.28 |
(C언어) 자료구조: 연결리스트(linked list)로 표현한 큐(queue) (0) | 2023.10.26 |
(C언어) 자료구조: 배열로 큐(Queue) 표현하기, 장점 단점 (0) | 2023.10.25 |