-
Notifications
You must be signed in to change notification settings - Fork 0
/
BinarySearchTree.c
87 lines (76 loc) · 1.55 KB
/
BinarySearchTree.c
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct btree btree;
//////////////BINARY SEARCH TREE
struct btree
{
int item;
btree *left;
btree *right;
};
btree* create_empty()
{
return NULL;
}
int empty(btree *bt)
{
return (bt == NULL);
}
btree* create_btree(int item, btree *left, btree *right)
{
btree *new_btree = (btree*) malloc(sizeof(btree));
new_btree->item = item;
new_btree->left = left;
new_btree->right = right;
return new_btree;
}
////////////////////// start of print functions
void print_pre(btree* bt) /// pre order
{
if(!empty(bt))
{
printf("%d", bt->item);
print_in(bt->left);
print_in(bt->right);
}
}
void print_in(btree *bt) /// in order
{
if(!empty(bt))
{
print_in(bt->left);
printf("%d", bt->item);
print_in(bt->right);
}
}
void print_post(btree *bt) /// post order
{
if(!empty(bt))
{
print_in(bt->left);
print_in(bt->right);
printf("%d", bt->item);
}
}
/////////////////////// end of print functions
btree* add_term(btree *bt, int item) //// BINARY SEARCH TREE ////
{
if(bt == NULL) bt = create_btree(item,NULL,NULL);
else if(bt->item > item) bt->left = add(bt->left,item);
else bt->right = add(bt->right, item);
return bt;
}
btree* search_term(btree *bt, int item) //// BINARY SEARCH TREE ////
{
if((bt == NULL) || (bt->item == item)) return bt;
else if(bt->item > item) return search_term(bt->left, item);
else return search_term(bt->right,item);
}
void remove_term(btree *bt,int item)
{
///COMPLETE LATER...
}
void main()
{
}