尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

BST(self saved)

BST(self saved)
📅 发布时间:2026/6/20 18:31:05
#include<iostream>
#include<cstdio>
using namespace std;
int root,tot;
struct bst
{int v,l,r,vnum,lnum;bst(){v=l=r=vnum=lnum=0;}void nw(int a){v=a;vnum=1;lnum=0;l=r=0;}
}tree[1000010];
struct nd
{int v,idx,fa;nd(){v=idx=fa=0;}nd(int a,int b,int c){v=a;idx=b;fa=c;}
};
nd prs(int p,int fa)//前驱 
{if(tree[p].r)return prs(tree[p].r,p);return nd(tree[p].v,p,fa);
}
int suc(int p)//后继 
{if(tree[p].l)return suc(tree[p].l);return tree[p].v;
}
void ist(int p,int tmp)
{if(p==0){p=root=++tot;tree[p].nw(tmp);return ;}if(tmp==tree[p].v)tree[p].vnum++;if(tmp<tree[p].v){tree[p].lnum++;if(!tree[p].l){tree[p].l=++tot;tree[tot].nw(tmp);}elseist(tree[p].l,tmp);}if(tmp>tree[p].v){if(!tree[p].r){tree[p].r=++tot;tree[tot].nw(tmp);}elseist(tree[p].r,tmp);}
}
void ck(int p=1)
{int ls=tree[p].l,rs=tree[p].r;if(ls)ck(ls);cout<<tree[p].v<<" "<<tree[p].vnum<<"\n";if(rs)ck(rs);
}
int ck_lnum(int p,int tmp)
{if(tree[p].v>=tmp&&tree[tree[p].l].v<tmp)return tree[p].lnum;if(tree[p].v>=tmp)return ck_lnum(tree[p].l,tmp);return ck_lnum(tree[p].r,tmp)+1;
}
int dt(int p)//结点p删除 , 返回新结点下标 
{int ls=tree[p].l,rs=tree[p].r;if((!ls)&&(!rs))return 0;if((!ls)||(!rs))return ls|rs;nd ps=prs(tree[p].l,p);if(tree[ps.fa].l==ps.idx)tree[ps.fa].l=0;elsetree[ps.fa].r=0;return ps.idx;
}
void dlt(int p,int tmp)
{int ls=tree[p].l,rs=tree[p].r;if(tree[p].v==tmp)//删到根了 {tree[p].vnum--;if(!tree[p].vnum)root=dt(p);}else if(tmp<tree[p].v){tree[p].lnum--;if(tmp==tree[ls].v)tree[ls].vnum--;if(!tree[ls].vnum)//删除结点 {int tp=dt(ls);tree[tp].l=tree[ls].l;tree[tp].r=tree[ls].r;tree[p].l=tp;}elsedlt(ls,tmp);}else{if(tmp==tree[rs].v)tree[rs].vnum--;if(!tree[rs].vnum)//删除结点 {int tp=dt(rs);tree[tp].l=tree[rs].l;tree[tp].r=tree[rs].r;tree[p].r=tp;}elsedlt(rs,tmp);}ls=tree[p].l;rs=tree[p].r;
}
int get_prs(int p,int tmp)
{if(p==0)return -(int)1e9;if(tree[p].v<tmp)return max(tree[p].v,get_prs(tree[p].r,tmp));elsereturn get_prs(tree[p].l,tmp);
}
int get_suc(int p,int tmp)
{if(p==0)return (int)1e9;if(tree[p].v>tmp)return min(tree[p].v,get_suc(tree[p].l,tmp));elsereturn get_suc(tree[p].r,tmp);
}
int ck_top(int p,int tmp)
{if(tree[p].lnum+1==tmp)return tree[p].v;else if(tree[p].lnum+1>tmp)return ck_top(tree[p].r,tree[p].lnum+1-tmp);elsereturn ck_top(tree[p].l,tmp);
}
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);//freopen("t.in","r",stdin);int m;cin>>m;while(m--){int op,x;cin>>op>>x;if(op==1)ist(root,x);if(op==2)dlt(root,x);if(op==3)cout<<ck_lnum(root,x)+1<<'\n';if(op==4)cout<<ck_top(root,x)<<'\n';if(op==5)cout<<get_prs(root,x)<<'\n'; if(op==6)cout<<get_suc(root,x)<<'\n';}}

相关新闻

  • jenkins 用户权限 管理配置
  • Windows系统Web UI自动化测试学习系列4--开源体系平台测试项目环境部署搭建
  • Node生态中最优雅的数据库事务处理机制

最新新闻

  • LPC213x I2C驱动开发:寄存器解析、状态机实战与调试指南
  • 智己LS6和问界M7怎么选?2026款值得买的深度对比与理性选购建议 - 外贸老黄
  • Agent 越能干,你越不敢放手?ANOLISA给它穿上全套防护
  • OpenWRT终极指南:iStore软件中心3大核心问题完整解决方案
  • 有向空间网络模型与兴趣聚类系数研究
  • ksnip终极指南:5分钟掌握这款强大的跨平台截图工具

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号