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.
obsidian-sync/日常学习/数据结构/AVL平衡搜索树(自平衡二叉搜索树).md

1.2 KiB

This file contains ambiguous Unicode characters!

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树可以定义为高度平衡二叉搜索树其中每个节点与平衡因子相关联该平衡因子通过从其左子树的子树中减去其右子树的高度来计算。 如果每个节点的平衡因子在-11之间,则称树是平衡的,否则,树将是不平衡的并且需要平衡。

平衡系数(k)=高度(左(k)) - 高度(右(k))

如果任何节点的平衡因子为1,则意味着左子树比右子树高一级。
如果任何节点的平衡因子为0,则意味着左子树和右子树包含相等的高度。
如果任何节点的平衡因子是-1,则意味着左子树比右子树低一级。 可以看到,与每个节点相关的平衡因子介于-1+1之间。 因此它是AVL树的一个例子。 !160613_98775.png

为什么使用AVL树

通过自平衡解决二叉搜索树查找(搜索)节点问题!!! AVL树通过不让它倾斜来控制二叉搜索树的高度。 高度为h的二叉搜索树中的所有操作所花费的时间 是O(h)。 但是,如果二叉搜索树变得偏斜(即最坏的情况),它可以扩展到O(n)。 通过将该高度限制为log nAVL树将每个操作的上限强加为O(log n),其中n是节点的数量。