一、二叉排序树
定义:树中的每个节点,它的左子树中的所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项。
二叉查找树中最困难的操作是remove(删除),分为以下几种情况:
1)如果节点是一片树叶,那么它可以被立即删除;
2)如果节点有一个儿子,则该节点可以在其父节点调整自己的链以绕过该节点后被删除;
3)复杂的情况是处理具有两个儿子的节点。一般的删除策略是用其右子树的最小的数据代替该节点的数据并递归的删除那个节点。
二、二叉堆
在二叉堆(假设为小顶堆)中的deleteMin操作
当删除一个最小元时,要在根节点处建立一个空穴。由于现在堆少了一个元素,因此堆中最后一个元素X必须移动到该堆的某个地方,如果X可以放入空穴中,那么deleteMin完成,一般不可能完成,因此我们将空穴的两个儿子中的较小者移入空穴,这样将空穴向下推了一层,重复该步骤直到X被填入到堆中的合适位置。