You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

寻求满足特定增删节点要求的11节点AVL树

寻求满足特定增删节点要求的11节点AVL树

我来给你构造一个完全符合要求的11节点AVL树,先理清楚核心逻辑:我们需要的树高度为4(按节点数定义高度,即根到最长叶子路径包含4个节点)。11个节点的AVL树最大高度就是4,且删除两个节点后剩余9个、插入一个后12个节点,都小于高度5的AVL树最小节点数15,理论上可以保持高度4,关键是结构要能支撑任意增删后的平衡操作不改变高度。

具体树结构

8
      /   \
     4     10
    / \   /  \
   2   6 9    11
  / \ / \
 1  3 5  7

这个结构的细节:

  • 根节点是8
  • 左子树是7个节点的满AVL树(高度3),包含节点1-7,是完全平衡的结构
  • 右子树是3个节点的AVL树(高度2),包含节点9-11

验证删除任意两个节点的情况

不管删除哪两个节点,平衡后树的高度都能保持4:

  • 两个节点都在左子树:左子树剩余5个节点,仍为高度3的AVL树(5≥高度3的AVL树最小节点数4),右子树高度2,根节点高度为max(3,2)+1=4,高度不变。
  • 一个节点在左、一个在右:左子树剩6个节点(高度3),右子树剩2个节点(高度1)。此时根节点平衡因子为2,执行LL旋转后,新根为原左子树的根4,原根8变为4的右孩子,4的原右子树(5-7)变为8的左子树。新根的左右子树高度分别为2和3,最终高度为max(2,3)+1=4
  • 两个节点都在右子树:右子树剩1个节点(高度1),根节点平衡因子为2,同样执行LL旋转后,新根的右子树高度为3,整体高度仍为4。

验证插入任意一个节点的情况

插入任意节点后总节点数为12,小于高度5的AVL树最小节点数15,通过AVL旋转可保持高度4:

  • 插入到右子树:右子树变为4个节点(高度2),根节点平衡因子为1,树仍为AVL树,高度保持4。
  • 插入到左子树:左子树变为8个节点(高度4),根节点平衡因子为2,执行LL旋转后,新根的左右子树高度均为3,整体高度为max(3,3)+1=4,高度不变。

备注:内容来源于stack exchange,提问作者Jonathan L

火山引擎 最新活动