平衡二叉树的做用spa
因为二叉排序树的结构可能不平衡,致使对树的运算的时间复杂度增长。.net
调整二叉排序树的结构,使其始终成为平衡的状态——平衡二叉树。blog
平衡二叉树的定义排序
若一个二叉树中每一个结点的左右子树的高度至多相差1,则称此树为平衡树ci
平衡因子get
二叉树中的每一个结点的左子树高度减去右子树高度。博客
平衡树中的每一个结点的平衡因子只能是:一、0、-1it
平衡二叉树的构造思路二叉树
在构造平衡二叉树的过程当中,每当插入一个结点时,首先检查是否由于插入而破坏了树的平衡性,如果,则找出其中最小不平衡子树,在保持排序树特性的前提下,调整最小不平衡子树中个结点之间的连接关系,以达到新的平衡。方法
最小不平衡子树
以离插入结点最近,且平衡因子绝对值大于1的结点做为根的子树。
须要对最小不平衡树进行调整
调整方法四种方式:
1,单向右旋平衡处理:
在左子树根节点的左子树上插入结点,能够进行一次向右的顺时针旋转操做。
2,单向左旋平衡处理:
在右子树根节点的右子树上插入结点,能够进行一次向左的逆时针旋转操做。
3,双向旋转(先左后右)
在左子树的右子树上插入结点,先进行一次左的逆时针旋转,再进行一次向右的顺时针旋转。
4,双向旋转(先右后左)
在右子树的左子树上插入结点,先进行一次右的顺时针旋转,再进行一次向左的逆时针旋转。
学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog