Skip to content

Commit ff3cd19

Browse files
committed
bst 勘误
1 parent 184f8a9 commit ff3cd19

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

docs/17_二叉查找树/binary_search_tree.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ bst = BST.build_from(NODE_LIST)
185185

186186
- 找到待删除节点 N(12) 的后继节点 S(23)
187187
- 复制节点 S 到节点 N
188-
- 删除节点 S
188+
- 从 N 的右子树中删除节点 S,并更新其删除后继节点后的右子树
189189

190190
说白了就是找到后继并且替换,这里之所以能保证这种方法是正确的,你会发现替换后依旧是保持了 BST 的性质。
191191
有个问题是如何找到后继节点呢?待删除节点的右子树的最小的节点不就是后继嘛,上边我们已经实现了找到最小 key 的方法了。
@@ -214,7 +214,7 @@ bst = BST.build_from(NODE_LIST)
214214
return subtree.left # 返回它的孩子并让它的父亲指过去
215215
else:
216216
return subtree.right
217-
else: # 俩孩子,寻找后继节点替换
217+
else: # 俩孩子,寻找后继节点替换,并从待删节点的右子树中删除后继节点
218218
successor_node = self._bst_min_node(subtree.right)
219219
subtree.key, subtree.value = successor_node.key, successor_node.value
220220
subtree.right = self._bst_remove(subtree.right, successor_node.key)

0 commit comments

Comments
 (0)