We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 184f8a9 commit ff3cd19Copy full SHA for ff3cd19
docs/17_二叉查找树/binary_search_tree.md
@@ -185,7 +185,7 @@ bst = BST.build_from(NODE_LIST)
185
186
- 找到待删除节点 N(12) 的后继节点 S(23)
187
- 复制节点 S 到节点 N
188
-- 删除节点 S
+- 从 N 的右子树中删除节点 S,并更新其删除后继节点后的右子树
189
190
说白了就是找到后继并且替换,这里之所以能保证这种方法是正确的,你会发现替换后依旧是保持了 BST 的性质。
191
有个问题是如何找到后继节点呢?待删除节点的右子树的最小的节点不就是后继嘛,上边我们已经实现了找到最小 key 的方法了。
@@ -214,7 +214,7 @@ bst = BST.build_from(NODE_LIST)
214
return subtree.left # 返回它的孩子并让它的父亲指过去
215
else:
216
return subtree.right
217
- else: # 俩孩子,寻找后继节点替换
+ else: # 俩孩子,寻找后继节点替换,并从待删节点的右子树中删除后继节点
218
successor_node = self._bst_min_node(subtree.right)
219
subtree.key, subtree.value = successor_node.key, successor_node.value
220
subtree.right = self._bst_remove(subtree.right, successor_node.key)
0 commit comments