您的位置:首页 > 其它

平衡二叉树的实现原理

2015-04-02 17:59 183 查看
平衡二叉树引入了平衡因子BF(Balance Factor),根据平衡因子可以构造平衡二叉树以及判断该二叉树是否一棵平衡二叉树!

BF的定义:二叉树上的结点上的左子树的深度值与右子树的深度值之差,如果绝对值小于等于1,表示该树是平衡二叉树!

举例判断是否平衡二叉树:

图1:



从9结点看,9的左子树的深度是2,右子树是0,2-0=-2,所以不满足平衡二叉树的条件!

平衡二叉树的优势,看图:






将3 2 1 4 5 6 7 10 9 8这几个数构造成一棵二叉树,由于这样的树的高度很高,查找起来还不如没有构成树的速度快!

构造平衡二叉树的实现实例:

通过对3 2 1 4 5 6 7 10 9 8进行构造一棵平衡二叉树,如图演示步奏:

图1:插入3 2 1





图1的3结点的左子树的高度2 - 右子树0=-2,此时不满足条件平衡二叉树的条件,左高的话我们可以进行右旋转,如图2:

图2:






图3:插入结点4



图4:插入5





插入了5之后,上图4可以看出2和3两个结点都发生了不平衡,此时我们从3结点进行纠正,3结点的左子树深度0 - 右子树深度2 =-2,左边不平衡,所以我们进行左旋转,

如图5:

图5:





图6:插入6





插入6后,2结点的左子树深度1- 右子树深度3=-2,此时我们需要进行左旋转,如图7:

图7:





插入7,如图8:





图8可以看到5的左子树深度0 - 右子树深度2=-2,所以需要进行左旋转,如图9:

图9:





插入10,如图10:





插入9,图11:



从图中可以看出4结点的BF为-2,6结点的BF为-2,7的结点的BF为-2,但是10的BF 切为1,所以我们此时先对10进行调整,此时需要右转,如图

图12:



图12,7的BF 因子为-2,所以我们对7进行左旋转,如图13:

图13:



插入8,如图14:



插入8之后导致4的BF=-2,6的BF=-2,而9的BF值为1,符号和前面的不对,所以我们对9进行调整,进行左旋转,如图15:

图15:



从图15,看到4的BF=-2,6的BF=-2,那么我们就先调整6的结点,进行左旋转,看图16:

图16

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: