Algorithm 为什么将BST节点的后续节点定义为比已删除节点大的节点?

Algorithm 为什么将BST节点的后续节点定义为比已删除节点大的节点?,algorithm,data-structures,binary-tree,binary-search-tree,Algorithm,Data Structures,Binary Tree,Binary Search Tree,在下图中,如果我将14添加到12的右侧,那么14可以替换15而不影响其他节点,就像正确答案16一样。为什么后继者被定义为使用比它大一点的数字而不是小一点的数字? 好吧,就语言而言,后继者是紧随其后的,这意味着它必须更大 在删除算法方面,您可以使用后续节点和前置节点来替换已删除的节点 succession:是已删除节点的右子树中的最小节点,这意味着它是比已删除节点大的最小节点,因此您可以保证,如果用它替换已删除节点,它仍然比右子树中的每个其他节点都小,因此不会破坏任何属性 preference:是

在下图中,如果我将14添加到12的右侧,那么14可以替换15而不影响其他节点,就像正确答案16一样。为什么后继者被定义为使用比它大一点的数字而不是小一点的数字?

好吧,就语言而言,
后继者是紧随其后的,这意味着它必须更大

在删除算法方面,您可以使用后续节点和前置节点来替换已删除的节点

succession
:是已删除节点的右子树中的最小节点,这意味着它是比已删除节点大的最小节点,因此您可以保证,如果用它替换已删除节点,它仍然比右子树中的每个其他节点都小,因此不会破坏任何属性

preference
:是已删除节点的左子树中最大的节点,这意味着它是比已删除节点小的最大节点,因此您可以保证,如果将已删除节点替换为它,它仍将比左子树中的所有其他节点都大,因此不会破坏任何属性


简而言之,你可以毫无问题地使用继任者或前任,这不是一个定义问题,只是一个选择问题。

好吧,“继任者”意味着它出现在之后,而不是之前。但是你可以在删除前一个时移动它;除非您将BST用作最小优先级队列,在这种情况下,您要删除的节点从来没有前置节点。您可能更愿意移动一个或另一个,这取决于哪一个将使树保持更平衡,但您通常必须以任何方式重新平衡。它的顺序是后续的。这是一种方法。您也可以使用Preference,原始树中的14在哪里?它不在那里。你怎么能用15代替14呢?如果它对你有帮助的话,考虑接受一个答案。