替罪羊树

替罪羊树是電腦科學中，一种基于部分重建的自平衡二叉搜索树。在替罪羊树上，插入或删除节点的平攤最壞時間複雜度是，搜索节点的最壞時間複雜度是。

在非平衡的二叉搜索树中，每次操作以后检查操作路径，找到最高的满足的结点，重建整个子树。这样就得到了替罪羊树，而被重建的子树的原来的根就被称为替罪羊节点。常数一般选择为左右。

与大多数平衡树所采用的缓慢调整的方式不同，替罪羊树采用了一种进行次数较少但代价较大的重构操作，即选择一个节点作为“替罪羊”，并将这个节点的子树直接重构成完全二叉树。因此，替罪羊树的最坏时间复杂度为

理论 
说一个二叉查找树是平衡的，当且仅当根节点左侧与右侧的节点各占一半，而替罪羊树则放松了这一限制，即，只需要满足

其中函数（递归地）定义如下

 function size(node)
     if node = nil then
         return 0
     else
         return size(node->left) + size(node->right) + 1
     end if
 end function

参考文献 

 

树结构