首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  其它技术  |  算法与数据结构  


二叉查找树(BST)---删除节点


原作者:fertiland    源出处:CSDN   发布者:施昌权    发布类型:转载    发布日期:2008-12-01

                                       
TreeNode* min_node(TreeNode *t)
...{
    if (t == NULL) ...{
        return NULL;
    }


    if (t->left != NULL) ...{
        return min_node(t->left);
    }
else...{
        return t;
    }

}

void rem_node(int value, TreeNode *&t)
...{
    if (value < t->value) ...{
        rem_node(value, t->left);
    }

    else if ( value > t->value) ...{
        rem_node(value, t->right);
    }

    else if (t->left != NULL && t->right != NULL) ...{//左子树非空,右子树非空
            TreeNode *tmp = min_node(t->right);
            t->value = tmp->value;
            rem_node(tmp->value, tmp);
        }

    else...{
        TreeNode *tmp = t;
        if (t->left == NULL ) ...{
            t = t->right;
        }

        else...{
            t = t->left;
        }

        free(tmp);
        tmp = NULL;
    }

}

注意删除节点时,需要修改指针,并且保存这种修改,在C语言考虑使用二级指针,C++提供界面更友好且实现相同功能引用(实现自引用的指针常量)。


关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号