/* File: trees.c * Author: Jim Mayfield */ #include #include typedef void *tree_item_type; #include "trees.h" typedef struct tree_tag { tree_item_type data; tree_type left; tree_type right; } tree_struct_type; tree_type tree_cons(tree_item_type value, tree_type left, tree_type right) { tree_type result; result = malloc(sizeof(tree_struct_type)); assert(result != NULL); result->data = value; result->left = left; result->right = right; return(result); } tree_item_type tree_data(tree_type tree) { assert(tree != the_empty_tree); return(tree->data); } tree_type left_child(tree_type tree) { assert(tree != the_empty_tree); return(tree->left); } tree_type right_child(tree_type tree) { assert(tree != the_empty_tree); return(tree->right); } BOOL empty_tree(tree_type tree) { return(tree == the_empty_tree); }