平衡二叉树插入操作的详细过程图解
二叉搜索树/二叉排序树/二叉查找树 是二叉树、任意结点的左子树的值均小于根节点的值,右子树均大于根节点的值 没有键值相等 平衡二叉树(AVL树) 定义 左右字数的高度差的绝对值不超过1,并且两子树都是平衡二叉树 没有键值相等 高度差,又名平衡因子,范围为[-1,0,1],在此规定==平衡因子 bf = 右子树的高度-左子树的高度== 插入操作 当有新的结点插入之前,该树一定是一个平衡二叉树 按照普通搜索树的方式插入结点cur 插入之后,调整cur的 parent.bf:插入到左边 bf --;插入到右边 bf++; bf变为3种值: (1)0:插入结束 (2)-1/1:调整 bf 的过程向上蔓延 (3 )-2/2:进行修复, 对失衡的情况进行修复 插入完成之后,该树依然是一个平衡二叉树 具体步骤 通过查找,找到key的合适的位置并将key插入(如果已经存在,则放弃查找) 设置并修改平衡因子 设置新插入的结点 cur 的平衡因子,新插入的结点的平衡因子是 0(未调整的),因为一定插入在叶子结点 修改 cur 的父节点 parent 的平衡因子 bf 如果cur是parent的左子树,parent.bf -= 1 如果cur是parent的右子树,parent.bf += 1 修改parent.bf 之后,parent.bf 的取值范围为 [-2,-1,0,1,2] 具体情况如下表: