~边城浪子~ 2015-12-03 03:18 采纳率: 0%
浏览 1377

关于C Primer Plus第5版的二叉树的问题

//从树中删除一个项目
bool DeleteItem(const Item *pi,Tree *ptree)
{
Pair look;
look = SeekItem( pi, ptree);
//如果要删除的项目本身不存在
if(look.child == NULL)
{
return false;
}

//删除根项目
if(look.child == ptree->root)
{
    DeleteNode(&ptree->root);
}
else if(look.parent->left == look.child)
    //DeleteNode(&look.parent->left);
    DeleteNode(&(look.child));
else
    //DeleteNode(&look.parent->right);
    DeleteNode(&(look.child));
ptree->size--;
return true;

}

    DeleteNode(&look.parent->left);
    DeleteNode(&(look.child));删不干净,这是为什么
  • 写回答

5条回答

  • ~边城浪子~ 2015-12-03 03:21
    关注

    typedef struct pair
    {
    Node *parent;
    Node *child;
    }Pair;

    static Pair SeekItem(const Item *pi,const Tree *ptree)
    {
    Pair look;
    look.parent = NULL;
    look.child = ptree->root;

    if(look.child == NULL)
        return look;
    
    
    while(look.child != NULL)
    {
        if(ToLeft(pi, &(look.child->item)))
        {
            look.parent = look.child;
            look.child = look.child->left;
        }
        else if(ToRight(pi, &(look.child->item)))
        {
            look.parent = look.child;
            look.child = look.child->right;
        }
        else
        {
            //不在左子树,也不在右子树,即找到指定节点
            break;
        }
    }
    
    return look;
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器