平衡二叉树插入某个节点的方法

本文介绍了在平衡二叉树中插入节点的方法,通过计算节点的平衡因子来判断是否需要调整。当平衡因子非法时,找到违规节点并进行四种情况的旋转调整,以保持树的平衡。
摘要由CSDN通过智能技术生成
  1. 确定违规节点的位置

             每个节点Z均有一个称之为平衡因子Bf的域,它用来存储(左子树的高度-右子树的高度)所得的值,合法的取值只有-1,0,1三种,一旦出现其他值则表示以节点Z为根的子树不是一颗平衡树,此时需要进行调整。  

             根据二叉查找树的插入规则找到节点Z应该插入的正确的位置,插入后将节点Z的平衡因子置为0,此时节点Z给它的父节点产生了一个增量,如果节点Z是左孩子那么对父节点的平衡因子进行加1操作,否则进行减1操作,如果此时父节点的平衡因子的值非0,那么它又对它的父节点产生一个增量,重复以上步骤直到找到第一个违规节点的位置,此时违规节点的平衡因子的绝对值大于1,为了描述方便我们将违规节点命名为节点A。上述判断流程如下:

              退出后判断节点Z的父节点的平衡因子是否为0,若是则此树已经平衡,否则父节点即为违规节点。

           2.调整二叉树使之平衡

            违规节点为A,节点A的左孩子为B,右孩子为C。分下面几种情况进行调整:

            (1).节点A的平衡因子为2  

                  (i).节点B的平衡因子为1,如图所示:</

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值