【发布时间】:2014-02-26 01:06:06
【问题描述】:
当节点 X 没有正确的孩子时,我很难理解它的后继节点。
据我了解,如果一个节点X 没有正确的孩子,那么它就没有后继。
但我的教科书是这样说的:
如果节点
X的右子树为空且X有后继Y...
X没有合适的孩子,怎么会有继任者?
【问题讨论】:
当节点 X 没有正确的孩子时,我很难理解它的后继节点。
据我了解,如果一个节点X 没有正确的孩子,那么它就没有后继。
但我的教科书是这样说的:
如果节点
X的右子树为空且X有后继Y...
X没有合适的孩子,怎么会有继任者?
【问题讨论】:
后继元素只是有序序列中的下一个元素;它不一定是子元素。
比如下面5的后继是7:
7
/ \
5 8
【讨论】:
节点X 的后继节点是树中相对于X 的最小更大 元素S。也就是说,对于集合G = { Si | Si > X }中的所有节点,那么S是G和S <= Si的一个元素,对于i=1..n。
在 BST 中,对于任何节点X,X 的左子树中的所有元素都小于X,而其右子树中的所有元素都大于它。
现在将X 视为树中的任意节点,并让P 为其父节点。在以下两种情况下,X 是否有左子树(其中包含小于 X 的元素)不都无关紧要。
X 有一个右子树
X 的继承者定义位于右子树中。右子树的最小元素是最左边的元素,它是X 的后继元素。如果右子树只包含一个节点,那么它就是X 的后继节点。
X 没有右子树
X 是其父级P 的左孩子
那么父P就是继承者。
X 是其父 P 的右孩子
那么X的第一个祖先,我们称它为A,这样X落在A的左子树中就是X的后继。
10
/ \
5 14
/ \ / \
3 7 11 15
/ \ /
1 4 6
案例 1 的示例
案例 2 的示例
【讨论】: