int main(int argc, char** argv) { if (argc < (INPUT_ARG + 1)) { printf("***Missing input argument\n"); return EXIT_FAILURE; } FILE* file = fopen(argv[INPUT_ARG], FILE_READ_ONLY); if (!file) { printf("***File \"%s\" could not be found\n", argv[INPUT_ARG]); fclose(file); return EXIT_FAILURE; } linked_list* in_order_list = build_list_from_file(file, false); linked_list* post_order_list = build_list_from_file(file, true); if (in_order_list->size != post_order_list->size || in_order_list->size == 0 || post_order_list->size == 0) { ll_delete(in_order_list); ll_delete(post_order_list); fclose(file); printf("***the length of the inorder and post order traversal" " in the input must be nonzero and equal."); return EXIT_FAILURE; } printf("inorder: "); ll_print(in_order_list); printf("postorder: "); ll_print(post_order_list); binary_tree* btree = new_binary_tree(in_order_list, post_order_list); bt_print(btree); fclose(file); ll_delete(in_order_list); free(in_order_list); ll_delete(post_order_list); free(post_order_list); bt_delete(btree); free(btree); return EXIT_SUCCESS; }
int main() { // dirty repetitive tests, but thorough int failed = 0; struct binary_tree tree = new_binary_tree(); // tree of ints push_binary_tree(&tree, (void *)1, &less); push_binary_tree(&tree, (void *)0, &less); push_binary_tree(&tree, (void *)1, &less); push_binary_tree(&tree, (void *)3, &less); // 1 push_binary_tree(&tree, (void *)4, &less); // 0 1 push_binary_tree(&tree, (void *)2, &less); // 3 push_binary_tree(&tree, (void *)1, &less); // 2 4 push_binary_tree(&tree, (void *)2, &less); // 1 2 3 9 push_binary_tree(&tree, (void *)3, &less); // 8 11 push_binary_tree(&tree, (void *)9, &less); // push_binary_tree(&tree, (void *)11, &less); push_binary_tree(&tree, (void *)8, &less); void *returned; returned = delete_node_binary_tree(&tree.root); // 1 if ((int64_t) returned != 1) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 1); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 1 if ((int64_t) returned != 1) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 1); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 1 if ((int64_t) returned != 1) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 1); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 2 if ((int64_t) returned != 2) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 2); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 2 if ((int64_t) returned != 2) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 2); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 3 if ((int64_t) returned != 3) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 3); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 3 if ((int64_t) returned != 3) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 3); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 4 if ((int64_t) returned != 4) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 4); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 8 if ((int64_t) returned != 8) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 8); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 9 if ((int64_t) returned != 9) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 9); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 11 if ((int64_t) returned != 11) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 11); failed = -1; } returned = delete_node_binary_tree(&tree.root); // 0 if ((int64_t) returned != 0) { printf("deleted node value %lu != expected %d\n", (int64_t)returned, 0); failed = -1; } return failed; }