社区
数据结构与算法
帖子详情
AVL树的删除操作如何实现
RabbitLBJ
2013-03-11 09:41:11
看了几本数据结构的书,上面都没有将AVL树的删除操作是如何实现的?哪位高人能讲讲过程,如果能提供参考代码就更好了,谢谢
...全文
341
2
打赏
收藏
AVL树的删除操作如何实现
看了几本数据结构的书,上面都没有将AVL树的删除操作是如何实现的?哪位高人能讲讲过程,如果能提供参考代码就更好了,谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tjweilong
2013-03-11
打赏
举报
回复
全部代码 可以看我空间里上传的资源
tjweilong
2013-03-11
打赏
举报
回复
template<class T> AvlTree<T>& AvlTree<T>:: Delete(const T x) { AvlNode<T>* Temp=NULL;//被删除节点的父节点 int Direction= -1; //如果删除元素为其父的左孩子,则OnlyDelete函数将其设置为0,否则设置为1。该参数第一次右OnlyDelete函数设置,后续右本函数来设置 cout<<"删除元素:"<<x<<endl; OnlyDelete(x,&Temp,Direction); if(!Root) { cout<<"树已经空了,不需要再调整"<<endl; return *this; } if(!Temp) { PRINT_ERROR_MSG("没有找到要删除的元素"); } //运行到这里,Temp即为被删除元素的父节点,从Temp开始向根节点方向进行调整。 int AdjustFlag = 1;//调整标志,如果是0,不调整,如果为1,则进行调整; while(Temp) { if(AdjustFlag == 0) { cout<<"不再需要调整"<<endl; break; } if(Direction == 0) { Temp->Balance -=1; switch(Temp->Balance) { case 0: AdjustFlag = 1; break; case 1: PRINT_ERROR_MSG("删除左子树上节点,删除之后平衡因子为1,这种情况是不存在的"); break; case 2: PRINT_ERROR_MSG("删除左子树上节点,删除之后平衡因子为2,这种情况是不存在的"); break; case -1: cout<<"删除左子树节点,并且删除之后,因子为-1,此时不需要调整"<<endl; AdjustFlag = 0; break; case -2: cout<<"删除左子树节点,并且删除之后,因子为-2,此时需要调整,根据其右边第一个子节点情况来进行调整"<<endl; L_Rotate(Temp,AdjustFlag); break; } } if(Direction == 1) { Temp->Balance += 1; switch(Temp->Balance) { case 0: AdjustFlag = 1; break; case 1: cout<<"这种情况下,不需要调整"<<endl; AdjustFlag = 0; break; case -1: PRINT_ERROR_MSG("这种情况是不存在的:删除右子树节点之后,balance=-1"); AdjustFlag = 0; break; case 2: cout<<"需要调整"<<endl; R_Rotate(Temp->Parent,AdjustFlag); } } if(Temp->Parent) { if(Temp==Temp->Parent->Left) { Direction = 0; } if(Temp == Temp->Parent->Right) { Direction = 1; } } Temp = Temp->Parent; } return *this; }
AVL树
的C++
实现
AVL树
的C++
实现
,包括初始化,插入,
删除
,遍历,搜索等
操作
,有注释
C++版
AVL树
课程设计源代码
该程序通过C++
实现
了
AVL树
的一些基础
操作
:1.编写
AVL树
判别程序,并判别一...2.
实现
AVL树
的ADT,包括其上的基本
操作
:结点的加入和
删除
;3.
实现
基本
操作
的动态演示(图形演示);最重要的是,该程序可以画出你所输入的树
数据结构+算法综合资料库
5. 树形结构:如二叉树,分为搜索二叉树、平衡二叉树(
AVL树
、红黑树等),广泛应用于文件系统、数据库索引等。 6. 堆:是一种特殊的树形数据结构,常用于优先队列和
实现
高效的排序算法(如堆排序)。 7. 图:由节点...
1000多种java算法大全源码包
- **链表**:节点间通过指针连接,插入和
删除
操作
快速,但访问速度较慢。 - **栈**:后进先出(LIFO)结构,用于
实现
递归、回溯等。 - **队列**:先进先出(FIFO)结构,常用于任务调度和消息处理。 - **堆**:...
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章