aboutsummaryrefslogtreecommitdiff
path: root/c13/main.c
blob: 16e7ebb353c41e204d8a99a1063fc8079bed8198 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <stdio.h>
#include "ex00/ft_btree.h"
#include "ex00/btree_create_node.c"
#include "ex01/btree_apply_prefix.c"
#include "ex02/btree_apply_infix.c"
#include "ex03/btree_apply_suffix.c"
#include "ex04/btree_insert_data.c"
#include "ex05/btree_search_item.c"
#include "ex06/btree_level_count.c"

void f_print(void *d);
int	cmp(void *x, void *y);
int	equal(void *x, void *y);

int main()
{
	int	a = 1;
	int	b = 2;
	int	c = 3;
	int	d = 4;
	int	e = 5;
	int	big = 1000;
	int bigger = 10000;
	t_btree *t = btree_create_node(&a);
	t_btree *l = btree_create_node(&b);
	t_btree *r = btree_create_node(&c);
	t->left = l;
	t->right = r;

	printf("%d %p %p\n", *(int*)t->item, t->left, t->right);
	printf("%d %p %p", *(int*)l->item, l->left, l->right);

	printf("\n-----------------\n");
	btree_apply_prefix(t, &f_print);

	printf("\n-----------------\n");
	btree_apply_infix(t, &f_print);

	printf("\n-----------------\n");
	btree_apply_suffix(t, &f_print);

	printf("\n-----------------\n");
	t_btree *sorted = NULL;
	btree_insert_data(&sorted, &c, &cmp);
	btree_insert_data(&sorted, &a, &cmp);
	btree_insert_data(&sorted, &b, &cmp);
	btree_insert_data(&sorted, &e, &cmp);
	btree_insert_data(&sorted, &d, &cmp);
	btree_insert_data(&sorted, &big, &cmp);
	btree_insert_data(&sorted, &big, &cmp);
	/*btree_insert_data(&sorted, &bigger, &cmp);*/
	btree_apply_prefix(sorted, &f_print);

	printf("\n-----------------\n");
	t_btree *empty = NULL;
	t_btree *one = btree_create_node(&a);
	printf("%p\n", btree_search_item(empty, &a, &equal));
	printf("%p\n", (int*)btree_search_item(empty, &a, &equal));
	printf("%d\n", *(int*)btree_search_item(sorted, &a, &equal));
	printf("%d\n", *(int*)btree_search_item(sorted, &big, &equal));
	/*printf("%d\n", *(int*)btree_search_item(sorted, &bigger, &equal));*/

	printf("\n-----------------\n");
	printf("%d\n", btree_level_count(sorted));
	printf("%d\n", btree_level_count(t));
	printf("%d\n", btree_level_count(empty));
	printf("%d\n", btree_level_count(one));
}

void f_print(void *d)
{
	printf("%d ", *(int*)d);
	fflush(stdout);
}

int	cmp(void *x, void *y)
{
	if (*(int*)x < *(int*)y)
		return -1;
	if (*(int*)x > *(int*)y)
		return 1;
	return 0;
}

int	equal(void *x, void *y)
{
	if (*(int*)x == *(int*)y)
		return 0;
	return 1;
}