diff --git a/a3/binary_search_tree.c b/a3/binary_search_tree.c new file mode 100644 index 0000000..45ef99c --- /dev/null +++ b/a3/binary_search_tree.c @@ -0,0 +1,32 @@ +#include + +typedef struct Node { + int data; + struct Node* left; + struct Node* right; +} Node; + +Node* newNode(int data) { + Node* node = (Node*)malloc(sizeof(Node)); + node->data = data; + node->left = NULL; + node->right = NULL; + return(node); +} + +Node* insert(Node* node, int data) { + if (node == NULL) { + return(newNode(data)); + } + else { + if (data <= node->data) node->left = insert(node->left, data); + else node->right = insert(node->right, data); + return(node); + } +} + +int search(Node* root, int x) { + if(root == NULL || root->data == x) return root; + else if(root->data < x) return search(root->right, x); + else return search(root->left, x); +}