二叉数||AVL树

数据结构图文解析之:AVL树详解及C++模板实现   

写的太棒了,注意的两点,一个是旋转调整,一个节点删除


旋转调整:原文中描述的很清楚了

 

四种失衡调整

类型

使用情形

单左旋

在左子树插入左孩子节点,使得平衡因子绝对值由1增至2

单右旋

在右子树插入右孩子节点,使得平衡因子绝对值由1增至2

先左旋后右旋

在左子树插入右孩子节点,使得平衡因子绝对值由1增至2

先右旋后左旋

在右子树插入左孩子节点,使得平衡因子绝对值由1增至2

 

删除补充一下:

三种情况:

[1].    叶子节点:直接删除,然后旋转调整;

[2].    只有左(右)子树,删除然后用左(右)子树的根节点代替之,最后旋转调整;

[3].    左右子树都存在

          a)        中序遍历该要被删除的节点,该节点的前驱结点q代替它,旋转调整;说白了就是在左子树中找最大的那个值来代替之。

          b)        中序遍历后用后续节点h代替,和上面的其实一样,就是找一个最接近的数来代替(无非中序遍历的前后俩)

          c)        中序遍历后,删除,用左子树代替,右子树接到q的右子树上

 

其中a)实现起来最简单,只需要在左子树上一直往右遍历就好了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值