【C# 数据结构与算法】平衡二叉树


平衡二叉树

AVL树可视化工具(旧金山大学 (usfca)|数据结构可视化工具)

一、平衡二叉树定义

平衡二叉树又称AVL树。它可以是一颗空树,或者具有以下性质的二叉排序树:它的左子树和右子树的高度之差(平衡因子)的绝对值不超过1且它的左子树和右子树都是一颗平衡二叉树。

从上面简单的定义我们可以得出几个重要的信息:

  • 平衡二叉树又称AVL树
  • 平衡二叉树必须是二叉排序树
  • 每个节点的平衡因子=左子树和右子树的高度差至多为1。

 在插入操作中,只要将最小不平衡子树调整A平衡,则其他祖先结点都会恢复平衡
选择规则如下:

节点的平衡因子

最小的不平衡子树

当插入新节点导致不平衡时,就调整最小的不平衡子树

 调整规则:

 

 

 平衡二叉树的查找复杂度

 

证明如下:所有可以推出平衡二叉树的最大深度。