平衡二叉树的实现原理

平衡二叉树引入了平衡因子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



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值