AVL树操作及复杂度分析
1. AVL树插入元素
1.1 插入算法概述
插入元素到AVL树时,关键在于旋转操作。若插入元素导致树的平衡条件被破坏,就需要重新平衡树。为了检查平衡条件,需要全程管理节点的高度信息。以下是插入算法的基本代码:
InsertAVL(p,x)
If p is null then
create a node N with I(N)=x, L(N)=R(N)=null, H(N)=0,
and p pointing to N
else if x=I(N(p)) then return
– x is already in the search tree :: illegal insertion
else
{
If x<I(p) then call InsertAVL(L(p),x)
else call InsertAVL(R(p),x).
If H(L(p)) and H(R(p)) differ by more than 1
then {Rebalance(p); exit }
Else if H(p) ≠ 1 + max{H(L(p)),H(R(p))}
then update H(p) else exit
}
1.2 插入后处理的三种情况
根据节点高度的不同,插入后有三种情况需要处理:
1. 需要重新平衡 :如果当前节点 N(p) 的左右子树高度差超过1
超级会员免费看
订阅专栏 解锁全文
12

被折叠的 条评论
为什么被折叠?



