「学习笔记」平衡树——splay 三

前文链接:#

平衡树——splay
平衡树——splay

再补充两个操作,再补充两个操作,平衡树就暂时完结了。好耶ヾ(≧▽≦*)o
本文代码我没有测试过这两个操作目前对我来说太偏了,如果有错,欢迎在评论区指出!

十五、合并平衡树#

合并条件,第二棵平衡树的所有结点的值都比第一棵平衡树的要大,将第一棵平衡树的最大节点的右孩子设为第二棵平衡树

int join(int x,int y)
{
    if(!x)    return y;
    if(!y)    return x;
    while(ch[x][1])    x=ch[x][1];
    splay(x,0);
    ch[x][1]=y;
    fa[y]=x;
    pushup(x);
    return x;
}

十六、分离平衡树#

查找到节点,伸展到根节点,分离平衡树,这种做法是减少一个点的
如果不想减少点,那就插入一个虚拟点,从虚拟点分开,这样节点数不会发生改变,因为虚拟点本来就是多着的

void spilt(int id,int &a,int &b)
{
    find(id,0);
    a=ch[id][0];
    b=ch[id][1];
    cls(id);
    fa[a]=0;
    fa[b]=0;
}

完结撒花!q(≧▽≦q)#

作者:yifan0305

出处:https://www.cnblogs.com/yifan0305/p/16471902.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

转载时还请标明出处哟!

posted @   yi_fan0305  阅读(84)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示