You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从键集10,20,5,4,3,2,30,40构建AVL树?求分步指导

AVL树构建分步指南(键序列:10, 20, 5, 4, 3, 2, 30, 40)

AVL树的核心规则是每个节点的左右子树高度差(平衡因子)绝对值≤1,平衡因子定义为左子树高度 - 右子树高度。以下是逐个插入键的完整流程,包含失衡判断与旋转操作:


步骤1:插入10

树仅包含根节点10,左右子树高度均为0,平衡因子为0,完全平衡。

10

步骤2:插入20

按二叉搜索树(BST)规则,20作为10的右子节点。

  • 10的平衡因子:0 - 1 = -1(绝对值≤1,平衡)
10
      \
       20

步骤3:插入5

5作为10的左子节点。

  • 10的平衡因子:1 - 1 = 0(平衡)
10
     /  \
    5    20

步骤4:插入4

4作为5的左子节点。

  • 5的平衡因子:1 - 0 = 1
  • 10的平衡因子:2 - 1 = 1(绝对值≤1,平衡)
10
     /  \
    5    20
   /
  4

步骤5:插入3

3作为4的左子节点,此时触发失衡:

  • 4的平衡因子:1 - 0 = 1(高度2)
  • 5的平衡因子:2 - 0 = 2(高度3)
  • 10的平衡因子:3 - 1 = 2(绝对值>1,LL型失衡:失衡节点的左子树平衡因子为1)

旋转操作:对10执行右旋

  1. 将5提升为新根节点
  2. 原根10变为5的右子节点
  3. 5的右子树(空)转为10的左子树

旋转后树结构:

5
     /  \
    4    10
   /      \
  3        20

所有节点平衡因子绝对值均≤1,恢复平衡。

步骤6:插入2

2作为3的左子节点,触发失衡:

  • 3的平衡因子:1 - 0 = 1(高度2)
  • 4的平衡因子:2 - 0 = 2(绝对值>1,LL型失衡)

旋转操作:对4执行右旋

  1. 将3提升为5的左子节点,替代4的位置
  2. 原节点4变为3的右子节点
  3. 3的右子树(空)转为4的左子树

旋转后树结构:

5
     /  \
    3    10
   / \    \
  2   4    20

恢复平衡。

步骤7:插入30

30作为20的右子节点,触发失衡:

  • 20的平衡因子:0 - 1 = -1(高度2)
  • 10的平衡因子:0 - 2 = -2(绝对值>1,RR型失衡:失衡节点的右子树平衡因子为-1)

旋转操作:对10执行左旋

  1. 将20提升为5的右子节点,替代10的位置
  2. 原节点10变为20的左子节点
  3. 20的左子树(空)转为10的右子树

旋转后树结构:

5
     /  \
    3    20
   / \  /  \
  2   4 10  30

恢复平衡。

步骤8:插入40

40作为30的右子节点,检查平衡因子:

  • 30的平衡因子:0 - 1 = -1
  • 20的平衡因子:1 - 2 = -1
  • 5的平衡因子:2 - 2 = 0

所有节点平衡因子绝对值均≤1,无需旋转,最终AVL树结构为:

5
     /  \
    3    20
   / \  /  \
  2   4 10  30
             \
              40

内容的提问来源于stack exchange,提问作者shakir Sumon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 21:24:52