平衡二叉树

该二叉树具有以下特征:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将左子树上的结点的平衡因子BF定义为该结点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只可能是-1,0和1。下图中前两个为平衡二叉树,后两个不平衡:

平衡二叉树_第1张图片

以前关于树的部分我讲到了二叉排序树,我们希望由任何序列构成的二叉排序树都是平衡树,因为平衡树上任意结点的左右子树的深度之差都不超过1,则可以证明它的深度和logn是同数量级的,所以它的平均查找长度也和logn同数量级。将二叉排序树转换为平衡二叉树的示例如下:

平衡二叉树_第2张图片

也就是说,主要某个结点在插入子结点后平衡因子变成了-2,或者2,就需要调整结构。采用平衡树的优点是提高查找运算的速度,缺点就是插入和删除运算变得复杂化。它的时间复杂度O(log2n)相比二叉排序树的O(n)快了不少,所以也可以说平衡二叉树是二叉排序树的一种优化结构。

你可能感兴趣的:(平衡二叉树)