二叉排序树的平衡有多种算法,如红黑树,VAL数等,本章主要介绍VAL树。
VAL树的平衡通过旋转来实现,以右旋为例。
//P为根节点;L为左子树根节点;
void R_rotate(TreeNode P)
{
TreeNode L=P.left;//L是旋转后新的根节点,最终L的右子树指向原节点P;
P.left=L.right;//L的原右子树作为P的左子树
L.right=P;//L的右子树指向原节点P;
P=L;//P指向新的根节点。
}
二叉排序树的平衡有多种算法,如红黑树,VAL数等,本章主要介绍VAL树。
VAL树的平衡通过旋转来实现,以右旋为例。
//P为根节点;L为左子树根节点;
void R_rotate(TreeNode P)
{
TreeNode L=P.left;//L是旋转后新的根节点,最终L的右子树指向原节点P;
P.left=L.right;//L的原右子树作为P的左子树
L.right=P;//L的右子树指向原节点P;
P=L;//P指向新的根节点。
}