小蚂蚁学习数据结构(34)——平衡二叉树的概念

平衡二叉树的做用spa

    因为二叉排序树的结构可能不平衡,致使对树的运算的时间复杂度增长。.net

    调整二叉排序树的结构,使其始终成为平衡的状态——平衡二叉树。blog

平衡二叉树的定义排序

    若一个二叉树中每一个结点的左右子树的高度至多相差1,则称此树为平衡树ci

平衡因子get

    二叉树中的每一个结点的左子树高度减去右子树高度。博客

    平衡树中的每一个结点的平衡因子只能是:一、0、-1it

平衡二叉树的构造思路二叉树

    在构造平衡二叉树的过程当中,每当插入一个结点时,首先检查是否由于插入而破坏了树的平衡性,如果,则找出其中最小不平衡子树,在保持排序树特性的前提下,调整最小不平衡子树中个结点之间的连接关系,以达到新的平衡。方法

最小不平衡子树

    以离插入结点最近,且平衡因子绝对值大于1的结点做为根的子树。

须要对最小不平衡树进行调整

调整方法四种方式:

    1,单向右旋平衡处理:

        在左子树根节点的左子树上插入结点,能够进行一次向右的顺时针旋转操做。

    2,单向左旋平衡处理:

        在右子树根节点的右子树上插入结点,能够进行一次向左的逆时针旋转操做。

    3,双向旋转(先左后右)

        在左子树的右子树上插入结点,先进行一次左的逆时针旋转,再进行一次向右的顺时针旋转。

    4,双向旋转(先右后左)

        在右子树的左子树上插入结点,先进行一次右的顺时针旋转,再进行一次向左的逆时针旋转。


    学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog

相关文章
相关标签/搜索