입력으로 정수가 들어오면 1~정수까지 완전 이진 트리 구현하기
#include <stdio.h>
#include <stdlib.h>
typedef struct bTreeNode
{
int data;
struct bTreeNode* left;
struct bTreeNode* right;
}BTreeNode;
void SetData(BTreeNode* bt, int data)
{
bt->data = data;
}
BTreeNode* MakeBTreeNode(void)
{
BTreeNode* temp = malloc(sizeof(BTreeNode));
temp->left = NULL;
temp->right = NULL;
return temp;
}
void SetLeftChild(BTreeNode* main, BTreeNode* child)
{
main->left = child;
}
void SetRightChild(BTreeNode* main, BTreeNode* child)
{
main->right = child;
}
BTreeNode* Search(BTreeNode* bt, int data)
{
BTreeNode* temp;
if (bt == NULL) return NULL;
if (bt->data == data) return bt;
if (temp = Search(bt->left, data)) return temp;
else return Search(bt->right, data);
}
int main()
{
int number;
int i;
scanf("%d", &number);
BTreeNode* route = MakeBTreeNode();
route->data = 1;
BTreeNode* mother;
BTreeNode* temp;
for (i = 2; i <= number; i++)
{
mother = Search(route, i / 2);
temp = MakeBTreeNode;
temp->data = i;
if ((mother->left) == NULL)
{
SetLeftChild(mother, temp);
}
else
{
SetRightChild(mother, temp);
}
}
return 0;
}