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.
1.4 KiB
1.4 KiB
AVL树可以定义为高度平衡二叉搜索树,其中每个节点与平衡因子相关联,该平衡因子通过从其左子树的子树中减去其右子树的高度来计算。
如果每个节点的平衡因子在-1
到1
之间,则称树是平衡的,否则,树将是不平衡的并且需要平衡。
平衡系数(k)=高度(左(k)) - 高度(右(k))
如果任何节点的平衡因子为1
,则意味着左子树比右子树高一级。
如果任何节点的平衡因子为0
,则意味着左子树和右子树包含相等的高度。
如果任何节点的平衡因子是-1
,则意味着左子树比右子树低一级。
可以看到,与每个节点相关的平衡因子介于-1
和+1
之间。 因此,它是AVL树的一个例子。
!
为什么使用AVL树:
通过自平衡解决二叉搜索树查找(搜索)节点问题!!!
AVL树通过不让它倾斜来控制二叉搜索树的高度。 高度为h
的二叉搜索树中的所有操作所花费的时间
是O(h)
。 但是,如果二叉搜索树变得偏斜(即最坏的情况),它可以扩展到O(n)
。 通过将该高度限制为log n
,AVL树将每个操作的上限强加为O(log n)
,其中n
是节点的数量。
模拟AVL树插入及自平衡过程 AVL Tree Visualzation (usfca.edu)