Ejemplo n.º 1
0
int main(int argc, char *argv[])
{
    bitree root;
    int arr[20] = {
        29, 23, 45, 16, 18,
        17, 34, 38, 24, 19,
        0
    };

    root = create_bitree(arr, ARRY_SIZE(arr));             // 构建顺序二叉树遇到 0 结束
    printf("/******************************************/\n");
    inorder_bitree(root, dump_node);       // 中序遍历二叉树
    printf("/******************************************/\n");
    destroy_bitree(root);                  // 中序遍历释放内存
    
    return 0;
}
Ejemplo n.º 2
0
bitree create_bitree(int *arr, int size)
{
    int data           = 0;
    bitree root        = NULL;
    node_t *insert_des = NULL;
    node_t *node       = NULL;
    int i              = 0;

    if((arr == NULL) || (size <= 0)) {
        return NULL;
    }

    for (i = 0; i < size; ++i)
    {
        if ((data = arr[i]) == 0) {
            break;
        }

        if (root == NULL) {
            if ((root = init_node(data)) == NULL) {
                break;
            }
            continue;
        }

        insert_des = search_bitree(root, data);
        if (insert_des->data != data) {
            printf("parent node data : %d\t", insert_des->data);
            if ((node = init_node(data)) == NULL) {
                destroy_bitree(root);
                return NULL;
            }

            if (insert_des->data > data) {
                printf("left\n");
                insert_des->l_child = node;
            } else {
                printf("right\n");
               insert_des->r_child = node;
            }
        }
    }

    return root;
}
Ejemplo n.º 3
0
int main(void) {
    Node *n8 = create_node(1000,NULL,NULL);
    Node *n1 = create_node(55,NULL,n8);
    Node *n2 = create_node(100,NULL,NULL);
    Node *n3 = create_node(1,n1,n2);
    Node *n4 = create_node(2,NULL,NULL);
    Node *n5 = create_node(3,NULL,NULL);
    Node *n6 = create_node(4,n4,n5);
    Node *n7 = create_node(5,n3,n6);

    root r = init_bitree(n7);
    pre_search(r);
    printf("\n");
    mid_search(r);
    printf("\n");
    last_search(r);
    printf("\n");
    destroy_bitree(r);
    return 0;
}