二叉搜索树:BST 左子节点比当前节点小,右子节点比当前节点大。
平衡二叉树:平衡因子(左子树与右子树高度差)不超过1 高度与节点的关系为0(logn)。
不平衡节点:平衡因子大于1的第一个节点。
如下图所示,树R(它是平衡二叉树)的左子树高度为2,右子树高度为1,那么他的平衡因子=左子树高度-右子树高度=1。
树N(它不是平衡二叉树)的左子树高度为3,右子树高度为1,那么他的平衡因子=左子树高度-右子树高度=2。
下图中平衡因子在N处第一次大于1,因此N为不平衡节点。
下面引出如何维护平衡:右旋和左旋。
右旋的条件:1.新插入节点导致不平衡
2.不平衡节点在插入的路径上
3.叶子节点在不平衡节点的左侧的左侧。
仍然以上图为例,进行右旋操作(操作后由于仍是T1<A<T2<R<T3<N<T4,BST Tree仍不变)。
左旋:右旋的条件:1.新插入节点导致不平衡
2.不平衡节点在插入的路径上
3.叶子节点在不平衡节点的右侧的右侧。
下面举个稍微复杂一些的例子。
不平衡节点的左边节点的右边节点插入,先左旋再右旋。
树,二叉搜索树,平衡二叉树和左旋右旋
最新推荐文章于 2024-05-10 20:54:59 发布