构造区间树。以及区间树查找算法实现。C语言实现

本文详细介绍了如何用C语言实现区间树,并展示了插入节点和区间查找的算法实现,同时包括左旋、右旋操作以保持树的平衡。通过对节点的更新维护了区间最大值的正确性。
摘要由CSDN通过智能技术生成

//左旋右旋也需要维护区间性质
void leftRotate(Tnode* root,Tnode x){
    Tnode y = x->r;
    x->r = y->l;
    //y->l = x;
    if(y->l!=tnil)
    (y->l)->p = x;
    y->p = x->p;
    if(x==*root){
       *root = y;
    }else{
       if(x==(x->p)->l){
          (x->p)->l = y;
       }else if(x==(x->p)->r){
           (x->p)->r = y;
       }
    }
    y->l = x;
    x->p = y;
    //维护区间性质只需要处理x.max和y.max即可
    x->max = Max(x->tint.high,x->l->max,x->r->max);
    y->max = Max(y->tint.high,y->l->max,y->r->max);
}
void rightRotate(Tnode* root,Tnode y){
     Tnode x = y->l;
     y->l = x->r;
     if(x->r!=tnil){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值