|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
×
平衡二叉树:对比于二叉排序树对于时间复杂度的不可控制,平衡二叉树有个更加稳定的时间复杂度。我们构建了一个左右子树平衡的二叉树,使每个节点的左、右二叉树的深度差值不超过1,便于遍历。
构建过程:在构建时,除了需要按照排序二叉树的构建原则,使节点的左子树的数据小于节点的数据,节点右子树的数据大于节点的数据。同时,在添加数据时,我们需要对二叉树每个节点进行一个判定,若出现一个节点的平衡因子<=-2,则将该部分进行一次左旋转,若平衡因子大于2,则进行一次右旋转。需要注意的是,若出现几个节点的平衡因子正负号不同,则需要对平衡因子正负不同的几个节点的子树进行旋转,而不能只对几个节点统一只做一次大的旋转。
代码实现:我们利用递归的办法,先根据二叉排序树的规则将新的数据插入二叉树,然后判断一次“长高”部分的节点的平衡因子是否失衡,若失衡我们则需要对失衡部分进行旋转。先对节点进行平衡因子的调整和判断,若节点的左(右)子树的平衡因子不为0,我们只需要做一次旋转即可,否则需要进行两次旋转
|
评分
-
查看全部评分
|