3/11/24二叉树排序删除、双数组二分查找

文章详细介绍了二叉排序树的递归和非递归删除方法,以及2014年的一道双数组二分查找真题,涉及查找逻辑和替换策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 目录

二叉排序树删除

双数组二分查找真题2014

对于真题的逻辑解析是能理解的,但是自己独立思考出正确的思路还需要很长的练习。

二叉排序树删除

递归删除

void DeleteBST(BiTree &root, KeyType x) {
    if (NULL == root) return;
    if (root->key > x) {//删除树比结点小,进左子树查找
        DeleteBST(root->lchild, x);
    } else if (root->key < x) {
        DeleteBST(root->rchild, x);
    } else {//找到删除的结点
        if (root->lchild == NULL) {//左子树为空,右子树顶上去
            BiTree tempNode = root;
            root = root->rchild;
            free(tempNode);
        } else if (root->rchild == NULL) {//右子树为空,左子树顶上去
            BiTree tempNode = root;
            root = root->lchild;
            free(tempNode);
        } else {//左右子树都不为空
            //一般的删除策略是左子树的最大数据(左子树的最右结点) 或 右子树的最小数据(右子树的最小结点)
            //代替要删除的结点(这里采用查找左子树最大数据来代替)
            Bi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值