博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉查找树
阅读量:5326 次
发布时间:2019-06-14

本文共 1721 字,大约阅读时间需要 5 分钟。

typedef int Int;struct BSTNode{	BSTNode *kid[2],pa;	Int val;	int cnt;}*root,*nil;nil=new BSTNode();root=nil;BSTNode * Search(BSTNode * node,Int val){	while(node!=nil && val!=node->val){		int drct=(val
val)?0:1; node=node->kid[drct]; } return node;}BSTNode * Extrema(BSTNode * node,int drct){ while(node->kid[drct]!=nil) node=node->kid[drct]; return node;}BSTNode * Cessor(BSTNode * node,int drct){ if(node->kid[drct]!=nil) return Extrema(node->kid[drct],1-drct); BSTnode * p=node->pa; while(p!=nil && p->kid[drct]==node){ node=p; p=p->pa; } return p;}void InitNode(BSTNode * node,Int val,int cnt=1){ if(node!=nil) delete node; node=new BSTNode(); node->val=val; node->cnt=cnt; node->kid[0]=node->kid[1]=node->pa=nil;}void Insert(BSTNode * pos,Int val){ if(pos==nil) { Initnode(pos,val); return; } BSTNode * node=new BSTNode(); InitNode(node,val,1); BSTNode *p=pos; while(p->val!=val){ int drct=(val
val)?0:1; if(p->kid[drct]==nil) { node->pa=p; p->kid[drct]=node; return;} p=p->kid[drct]; } p->cnt++;}bool Delete(Int val){ BSTNode *node=search(root,val); if(node==nil) return false; if(node->kid[0]==nil && node->kid[1]==0){ int drct=(node->pa->kid[0]==node)?0:1; node->pa->kid[drct]=nil; delete node; return true; } if(node->kid[0]==nil || node->kid[1]==0){ int padrt=(node->pa->kid[0]==node)?0:1; int kidrt=(node->kid[1]==nil)?0:1; node->pa->kid[padrt]=node->kid[kidrt]; node->kid[kidrt]->pa=node->pa; delete node; return true; } BSTNode sucnode=Cessor(node,1); int padrt=(node->pa->kid[0]==node)?0:1; node->pa->kid[padrt]=sucnode; sucnode->kid[0]=node->kid[0]; sucnode->kid[1]=node->kid[1]; delete node; return true;}

 

转载于:https://www.cnblogs.com/amyc/articles/BST.html

你可能感兴趣的文章
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
深入理解jQuery框架-框架结构
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
点击复制插件clipboard.js
查看>>
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>
C语言学习总结(三) 复杂类型
查看>>
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>