一个 AVL 树的问题

2019-02-12 14:55:48 +08:00
 androidzhujiao
比如 10 9 这俩数  插入一个 6
     10
      /
    9
   /
  6

这种旋转完之后就是
    9
    / \
   6. 10


但如果是这种的话


10 9 6 插入一个 4
                10
	       /
	     9
	    /
           6
          /
        4

10 和 9 都可以认为这棵树不平衡,也就是说 10 和 9 的左右子树都不平衡(或者说是故障点,等于现在树里有 2 个故障点)

逻辑上该认为哪个是轴呢

代码该从哪个节点开始处理呢

我知道旋转之后的结果肯定是这
          9
         /  \
       6.   10
      /
     4

但是逻辑上不太清楚(或者说先处理哪个故障点呢)
1668 次点击
所在节点    Python
3 条回复
noli
2019-02-12 17:14:00 +08:00
avl 树中有 10 9 6 三个节点上时候,就不可能是你现在画出来的样子吧?
ileadall
2019-02-12 21:02:44 +08:00
楼上加一,但事实上是下向上调整高度的时候,第一个不平衡的点来决定哪一种旋转类型。
drizztdouu00
2019-02-13 09:56:32 +08:00
每次插入后 会调整高度 不会出现你说的这种情况

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/534214

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX