Tree
Example
Deletion (By Value) or Change Value in BST
关键:递归,缩小子树。 (Top Down)
删除的是 successor 而不是 target,之后换值,保留其搜索性质,删除 leaf node.
每次递归时修改递归方向的节点为函数返回值,达到命中的节点修改,没命中的节点不变的效果(末尾返回 root)不更改中间节点。
Base Case 有两种,一种是没找到 Key,不做修改 ( return root );一种是找到了,分三种情况。
- 左节点为空 - 连接右节点
- 右节点为空 - 连接左节点
- 含 key 的节点为 root ,有两个子节点,找和它最接近的值(右的最左或左的最右 | successor),修改 root 的值为 successor 的值,删除 successor
Links