I am doing a binary search tree. I need some hints on how to do the insert and find. Anyone?
Code:
#include <stdio.h>
#define MAX_SIZE 32 /* should be a power of two */
#define EMPTY -1 /* special value to indicate empty node */
typedef int tree [MAX_SIZE];
/* Defines 'tree' as the type of an array of MAX_SIZE integers. */
void initialize_tree (tree t)
{
int i;
for( i = 0; i < MAX_SIZE; i++ )
{
t[i] = -1;
}
}
void print_tree(tree t)
{
int i;
for(i = 1; i < MAX_SIZE; i++)
{
if(t[i] == EMPTY) { printf(". "); }
else { printf("%d ", t[i]); }
}
printf("\n");
}
void bst_insert(tree t, int v)
{
/*** HERE ***/
}
int bst_find(tree t, int v) /* return 1 if found, 0 if not */
{
/*** HERE ***/
return 0;
}
int ask_for_number()
{
int x;
printf("Enter an integer, or %d to quit.\n", EMPTY);
scanf("%d", &x);
return x;
}
int main()
{
tree t;
int x;
initialize_tree(t);
x = ask_for_number();
while(x != EMPTY)
{
bst_insert(t, x);
print_tree(t);
x = ask_for_number();
}
printf("DONE INSERTING. Now you may query.\n");
x = ask_for_number();
while(x != EMPTY)
{
if(bst_find(t, x)) { printf("FOUND.\n"); }
else { printf("NOT FOUND. :(\n"); }
x = ask_for_number();
}
return 0;
}