平衡二叉树
作者:互联网
平衡二叉(查找、排序、搜索)树
(二叉排序树就查找怎么比二分便利了?)
-
应用场景:
当出现某一个子树非常长,如出现斜树,这样用二叉树来查找插入的话复杂度过高,需要优化。
这时当我们约束左右子树的高度差,将平衡因子控制在-1~1,虽然增加了查找的代码量(?),但可以优化斜树情况。 -
性质:
- 可以是空树
2.。。。。
- 一些概念:
-
平衡:左子树结点和右子树结点的高度差绝对值不能大于1.(差==平衡因子)
平衡因子:只能为1,0,-1
-
高度:
当不平衡时的方法:
1.左旋
步骤:
-
将(失衡结点的)右孩子结点(77)替代需平衡结点(66)的位置
-
右孩子(77)的左子树(72)变成该节点(66)的右结点。
-
该结点(66)变成右孩子(77)的左子树。
-
右旋同理
插入操作
1. 向左孩子的左子树插入结点/向右孩子的右子树插入结点。
如上,做单次右旋/左旋即可
2. 向左孩子(60)的右子树插入结点(64)
此时不能简单右旋了,
因为右旋动的是左孩子的右结点65,(将它移到失衡结点的左子节点),而此时情况下,65-64是失衡的关键,移动后只是将失衡带到了右子树。
-
先将左子树做左旋,使左孩子的右子树只有一个结点64
-
再整体做右旋
3.向右孩子的左子树插入结点
-
先对右孩子树进行右旋
-
再进行左旋
标签:左子,结点,孩子,右子,右旋,插入,二叉树,平衡 来源: https://www.cnblogs.com/susuju/p/15587059.html