This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
AVL树可以定义为高度平衡二叉搜索树,其中每个节点与平衡因子相关联,该平衡因子通过从其左子树的子树中减去其右子树的高度来计算。
如果每个节点的平衡因子在`-1`到`1`之间,则称树是平衡的,否则,树将是不平衡的并且需要平衡。
平衡系数(k)=高度(左(k)) - 高度(右(k))
如果任何节点的平衡因子为`1`,则意味着左子树比右子树高一级。
如果任何节点的平衡因子为`0`,则意味着左子树和右子树包含相等的高度。
如果任何节点的平衡因子是`-1`,则意味着左子树比右子树低一级。
可以看到,与每个节点相关的平衡因子介于`-1`和`+1`之间。 因此,它是AVL树的一个例子。
![[160613_98775.png]]
### 为什么使用AVL树:
通过自平衡解决二叉搜索树查找(搜索)节点问题!!!
AVL树通过不让它倾斜来控制二叉搜索树的高度。 高度为`h`的二叉搜索树中的所有操作所花费的时间
是`O(h)`。 但是,如果二叉搜索树变得偏斜(即最坏的情况),它可以扩展到`O(n)`。 通过将该高度限制为`log n`,AVL树将每个操作的上限强加为`O(log n)`,其中`n`是节点的数量。