平衡二叉树
- 平衡二叉树也叫平衡二叉搜索树,AVL树,可以保证查询效率较高。
- 主要特点是:是一颗空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两颗子树都是一个平衡二叉树。
创建一颗平衡二叉树的方法
怎么处理?-->进行左旋转(降低右子树的高度) * 创建一个新的结点newNode,值等于当前根结点的值 * 把新节点的左子树设置为当前节点的左子树。newNode.left = left * 把新节点的右子树设置为当前节点的右子树的左子树。newNode,right = right.left * 把当前节点的值换为右子结点的值。value = right.value * 把当前节点的右子树设置为右子树的右子树。right = right.right * 把当前节点的左子树设置为新节点。left = newLeft。
进行右旋转(降低左子树的高度) * 创建一个新的结点,其值等于当前节点的值newNode * 把新节点的右子树设置为当前节点的右子树(newNode.right = right) * 把新节点的左子树设置为当前节点的左子树的右子树(newNode.left = left.right) * 把当前节点的值换为左子节点的值(value = left.value) * 把当前节点的左子树设置为左子树的左子树(left = left.left) * 把当前节点的右子树设置为新节点(right = newLeft)
AVL树双旋转
- 当符号右旋转的条件时
- 如果它的左子树的右子树高度大于它的左子树的高度
- 先对当前这个节点的左结点进行左旋转
- 再对当前节点进行右旋转的操作即可
1 | package AVLTree; |