Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}