设为首页 加入收藏

TOP

AVL树C语言完整实现(三)
2014-07-19 22:52:54 来源: 作者: 【 】 浏览:117
Tags:AVL 语言 完整 实现

 

    root = leftbalance(root, parent, child);

    break;

    }

    else

    {

    parent->bf = LH;

    break;

    }

    }

    }

    if (dNode->parent != NULL)

    {

    if (dNode == dNode->parent->lchild)

    {

    dNode->parent->lchild = NULL;

    }

    else

    {

    dNode->parent->rchild = NULL;

    }

    }

    free(dNode);

    dNode = NULL;

    if (root == dNode)

    {

    root = NULL; //root被删除, 避免野指针

    }

    return root;

    }

    BSTNode* createAVL(int *data, int size)

    {

    int i, j;

    BSTNode *root;

    if (size<1)

    {

    return NULL;

    }

    root = (BSTNode*)malloc(sizeof(BSTNode));

    root->parent = NULL;

    root->lchild = NULL;

    root->rchild = NULL;

    root->key = data[0];

    root->bf = 0;

    for(i=1;i<size;i++)

    root = insertNode(data[i], root);

    return root;

    }

    void destroyAVL(BSTNode* root)

    {

    if (root != NULL)

    {

    destroyAVL(root->lchild);

    destroyAVL(root->rchild);

    free(root);

    root=NULL;

    }

    }

    void InOrderTraverse(BSTree root)

    {

    if(NULL != root)

    {

    InOrderTraverse(root->lchild);

    printf("%d\t",root->key);

    InOrderTraverse(root->rchild);

    }

    }

    void PreOrderTraverse(BSTree root)

    {

    if(NULL != root)

    {

    printf("%d\t",root->key);

    PreOrderTraverse(root->lchild);

    PreOrderTraverse(root->rchild);

    }

    }

    int main(int argc, char *argv[])

    {

    int data[] = {1, 5, 7, 4, 3, 2, 11, 9, 10,100};

    BSTNode* root;

    root = createAVL(data, sizeof(data)/sizeof(data[0]));

    printf("\n++++++++++++++++++++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    root = deleteNode(5, root);

    printf("\n++++++++delete 5++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    root = deleteNode(3, root);

    printf("\n++++++++delete 3++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    root = deleteNode(1, root);

    printf("\n++++++++delete 1++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    root = deleteNode(7, root);

    printf("\n++++++++delete 7++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    root = deleteNode(4, root);

    printf("\n++++++++delete 4++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    root = deleteNode(2, root);

    printf("\n++++++++delete 2++++++++++\n");

    InOrderTraverse(root);

    printf("\n");

    PreOrderTraverse(root);

    printf("\n");

    destroyAVL(root);

    }

        

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++构造函数:函数参数传递 下一篇C语言新建文件读出文件内容

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·CPython是什么?PyPy (2025-12-26 06:50:09)
·Python|如何安装seab (2025-12-26 06:50:06)
·python要学习数据分 (2025-12-26 06:50:03)
·每日一道面试题-多线 (2025-12-26 06:20:17)
·java项目中哪些地方 (2025-12-26 06:20:14)