다음은 간단한 이진트리의 예제이며 단순히 공간을 만들고 메인 함수에서 수동적으로 왼쪽과 오른쪽으로 나누고 값을 넣어주는 예제입니다.
BinaryTree.h
#ifndef __BINARY_TREE_H__
#define __BINARY_TREE_H__
typedef int BTData
typedef struct _bTreeNode{
BTData data
struct _bTreeNode *left
struct _bTreeNode *right
}BTreeNode
BTreeNode * MakeBTreeNode(void);//빈노드생성함수
BTData GetData(BTreeNode * bt);//bt의data 반환함수
void SetData(BTreeNode * bt, BTData data);//bt의data에입력받은data로세팅
BTreeNode * GetLeftSubTree(BTreeNode * bt);//왼쪽서브트리를가져옴
BTreeNode * GetRightSubTree(BTreeNode * bt);//오른쪽서브트리를가져옴
void MakeLeftSubTree(BTreeNode * main,BTreeNode * sub);//왼쪽서브트리를만듬
void MakeRightSubTree(BTreeNode * main,BTreeNode * sub);//오른쪽서브트리를만듬
#endif
BinaryTree.c
#include <stdio.h>
#include <stdlib.h>
#include "BinaryTree.h"
BTreeNode * MakeBTreeNode(void){
BTreeNode * nd = (BTreeNode*)malloc(sizeof(BTreeNode));
nd->left = NULL
nd->right = NULL
return nd
}
BTData GetData(BTreeNode * bt){
return bt->data
}
void SetData(BTreeNode * bt, BTData data){
bt->data = data
}
BTreeNode * GetLeftSubTree(BTreeNode * bt){
return bt->left
}
BTreeNode * GetRightSubTree(BTreeNode * bt){
return bt->right
}
void MakeLeftSubTree(BTreeNode * main,BTreeNode * sub){
if(main->left != NULL)
free(main->left);
main->left = sub
}
void MakeRightSubTree(BTreeNode * main,BTreeNode * sub){
if(main->right != NULL)
free(main->right);
main->right = sub
}
main.c
#include <stdio.h>
#include "BinaryTree.h"
int main(){
BTreeNode * bt1 = MakeBTreeNode();//노드bt1 생성
BTreeNode * bt2 = MakeBTreeNode();
BTreeNode * bt3 = MakeBTreeNode();
BTreeNode * bt4 = MakeBTreeNode();
SetData(bt1, 1);//bt1에데이터저장
SetData(bt2, 2);//bt2에데이터저장
SetData(bt3, 3);//bt3에데이터저장
SetData(bt4, 4);//bt4에데이터저장
MakeLeftSubTree(bt1, bt2);//bt2를bt1의왼쪽자식으로
MakeRightSubTree(bt1, bt3);//bt3를bt1의오른쪽자식노드로
MakeLeftSubTree(bt2, bt4);//bt4를bt2의왼쪽자식노드로
printf("%d \n", GetData(GetLeftSubTree(bt1)));
printf("%d \n", GetData(GetLeftSubTree(GetLeftSubTree(bt1))));
return 0;
}
출력화면
'프로그래밍 > C언어 C++언어' 카테고리의 다른 글
C/C++ - 전위 중위 후위 순위를 도입한 이진트리 (0) | 2015.01.25 |
---|---|
C/C++ - 함수포인터 (펌자료) (0) | 2015.01.25 |
C/C++ - STL 라이브러리 string 함수 사용법 (3) | 2014.01.28 |