首先, 先明确 “结点 x 的 successor” 的概念。 这句话的概念是, successor 是整个二叉树中, key 仅比 x 的 key 大的结点。
求证: 若 x 有两个孩子, 那么其 successor 没有左孩子。
证明: 若 x 有两个孩子, 则其右子树存在。在二叉树链表中, 对于任意 x 的右子树都是 key 比 x 的 key 大的结点的集合, 即{y|y->key > x->key}。根据 successor 的定义, 若 x->rightChild ≠ nil, 则 successor = Min({y|y->key > x->key})。意味着如果节点 y 是 x 的 successor 且 x 有右孩子, 那么 y 必为 x 的右子树的最左端结点, 所以 y 必然没有左孩子。
对于 Successor() 函数中算法的解释: