标签:旋转 分析 处理 删除 出现 是什么 avl 代码 实现
接下来就看一下avl树是怎么进行旋转,怎么进行遍历等操作的。
为什么都是 多了两层,而不会有 多了三层,多了四层这些操作呢?
因为的话造成不平衡:是插入或者删除或者之类的。在那个临界点,就把它解决成了平衡。之后每次出现两层的时候,都进行处理
就不会有三层 四层的 情况
我能理解这里的四种情况,但是我思考的事情是:
这其实也是作为不平衡的情况,为什么这种情况不算?
原因:
看了对于旋转的操作之后,就知道其实如果我上面那种情况,意思就是:Y是空,那么是一样的,就只是说它为空而已
现在对于 左左,右右知道是什么意思了。
意思就是:造成问题的节点,是在从根节点出发往哪边走
自己知道右旋转什么意思了:把根顺时针,就像是往右转了一样(应该是为了和左左对应)
然后的话继承相应的Y
对于这种情况,其实就是 左右 的情况
key:从底层开始先实现,最底层是偏右,所以就左旋转
然后再看这个结构,上层就变成了左,所以就右旋转
自己知道应该从底层开始旋转,并且知道了对应什么情况下实行什么旋转,并且知道旋转对应的操作是什么,下章节去分析代码
分析代码的目的是:知道什么时候需要旋转。
标签:旋转 分析 处理 删除 出现 是什么 avl 代码 实现
原文地址:https://www.cnblogs.com/startFrom0/p/12638441.html