구현 연습 - 트리

honeyricecake·2022년 2월 13일
0

자료구조

목록 보기
23/36

입력으로 정수가 들어오면 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;
}

0개의 댓글