int Tree_Dump (node* my_node, char* tab) { assert(my_node); assert(tab); Node_Dump (my_node); fprintf (LOG, "%s|\n", tab); fprintf (LOG, "%s" "R---", tab); char new_tab[TMPLEN] = {}; sprintf(new_tab, "%s| ", tab); if (my_node -> right == NULL) fprintf(LOG, "[nil]\n"); else Tree_Dump (my_node -> right, new_tab); fprintf (LOG, "%s|\n", tab); fprintf (LOG, "%s" "L---", tab); sprintf(new_tab, "%s ", tab); if (my_node -> left == NULL) fprintf (LOG, "[nil]\n"); else Tree_Dump (my_node -> left, new_tab); return HAPPY; }
int Node_Add_Left (root_t* tree, tree_t* node, tree_t* child) { TREE_CHECK (tree); NODE_CHECK (node); NODE_CHECK (child); if (node->left == NULL) { node->left = child; node->left->parent = node; TEC (Tree_Update_Sizes (tree, node, child->size), node); } Tree_Dump (stdout, tree); TREE_CHECK (tree); NODE_CHECK (node); return TREE_OK; }
int main() { FILE* the_expression = fopen ("the_expression.txt", "r"); assert (THE_LOG); assert (the_expression); node* exp_tree = Node_NEW(); Check_Error (Tree_Read_in (the_expression, exp_tree)); int nTabs = 0; Tree_Dump (exp_tree, nTabs); fprintf (THE_LOG, "\n\n\n"); Tree_Print (exp_tree); Tree_Delete (exp_tree); fclose (the_expression); fclose (THE_LOG); return 0; }