免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2030 | 回复: 2
打印 上一主题 下一主题

请问一个关于AVL树的删除恩路. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-29 18:11 |只看该作者 |倒序浏览
AVL树的插入思路是:
找到那个插入位置,插入结点,然后从插入位置开始向根结点回溯更新每一个结点的高度,如果在这个路径中有一个结点的平衡因子等于2时,说时AVL树的平衡条件在此被破坏,需要进行旋转..  关键操作就在于判断选择AVL树调整方法LL,RR,LR,RL这四种方法的哪一种. 插入操作是通过判断新加入的结点位于破坏平衡结点的左子树的左边(LL),位于破坏平衡结点的左子树的树的右边(LR).们于破坏来平衡结点右子树的右边(RR),位于破坏平衡结点的右子树的左边(RL),这个判断很容易实现.因为我知道那个插入结点的值,所以这个判断很容易实现.

现在问题就来了.在进行删除操作时,我在怎么办呢?我从被删结点向根回溯更新这条路径上每一个结点的高度,这时我如果发现破坏平衡的结点,我要怎么判断采用四种调整方法的哪一种.请明白的朋友给个思路.最好别让我去读别人的代码.那个太难懂了.

论坛徽章:
0
2 [报告]
发表于 2011-04-29 23:13 |只看该作者
删除节点时,把左子树的最大值(或右子树的最小值)替换到要删除的节点,然后从最大值(最小值)原来的位置从下往上调整。印象中是这样的。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
3 [报告]
发表于 2011-04-30 11:16 |只看该作者
AVL树的插入思路是:
找到那个插入位置,插入结点,然后从插入位置开始向根结点回溯更新每一个结点的高度,如果 ...
zhaogengzi 发表于 2011-04-29 18:11



    http://blogold.chinaunix.net/u3/92831/showart_2166582.html

下载源码,在tree_del.c里,看看就明白了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP