平衡树大总结

二叉搜索(排序)树(Binary Search(Sort) Tree, BST)


BST 是满足一下性质的二叉树:

1.若根节点的右子树非空,则右子树的所以点的点值都大于根节点。
2.若根节点的左子树非空,则左子树的所以点的点值都小于根节点。
3.根的左右子树都为 BST。


不过正常维护 BST 插入删除是 \(O(N)\) 的(链),于是dalao们发明了各种各样的平衡树(优化的 BST )来均衡复杂度。


AVL-trees

又称高度平衡二叉树。

定义 \(h_u\) 表示以 \(u\) 为根的树的高度(这里把空树的高度定义为 1),\(L_u\)\(u\) 的左子树,\(R_u\)\(u\) 的右子树。

性质:
1.满足 BST 性质。
2.\(L_u\)\(R_u\) 是 AVL。
3.\(|h_{L_u}-h_{R_u}|\le 1\)

性质三可以看出来 AVL 的树高满足 \(O(\log N)\)(具体约是 \(1.44\log_2 N\),不过我不会证)。

而为了方便维护性质三,我们对于每一个节点设一个平衡因子 bf。
定义 \(bf_{u}=h_{L_u}-h_{R_u}\)
不难看出 bf 取值只有 \(-1,0,1\),而若 \(|bf|> 1\),则我们称这棵二叉树失衡了,接下来考虑然后处理失衡。


rotate

rotate

posted @ 2026-06-15 18:39  lzx20120124  阅读(6)  评论(0)    收藏  举报