You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
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`是节点的数量。
|