在下图中,如果我在12的右边添加14,则14可以替换15而又不影响其他节点,就像正确答案16一样。为什么将后继定义为使用更大的数字而不是比它小一点?
答案 0 :(得分:0)
就语言而言,successor
是紧随其后的语言,这意味着它必须更大。
就删除算法而言,您可以同时使用后继者和前任者来替换已删除的节点。
Successor
:是已删除节点右子树中的最小节点,这意味着它是大于已删除节点的最小节点,因此,如果将已删除节点替换为,则可以保证它仍然比右子树中的每个其他节点都要小,因此不会破坏任何属性。
Predecessor
:是已删除节点左子树中的最大节点,这意味着它是小于已删除节点的最大节点,因此,如果将已删除节点替换为,则可以保证它仍然比左侧子树中的所有其他节点大,因此不会破坏任何属性。
简而言之,您可以毫无问题地使用后继者或前任者,这不是定义问题,只是选择问题。