- 题目链接:450. 删除二叉搜索树中的节点
- 考查知识:二叉搜索树+删除
- 题意描述:给定二叉搜索树和要删除树中的值,在BST删除中删去该结点
- 思路简析
- 二叉树删除操作
1 .叶子节点:直接删除,不影响原树。
2 .仅仅有左或右子树的节点:节点删除后,将它的左子树或右子树整个移动到删除节点的位置就可以,子承父业。
3 .既有左又有右子树的节点:找到须要删除的节点p的直接前驱或者直接后继s,用s来替换节点p,然后再删除节点s。- 注意二叉树搜索树的查找,插入,删除操作树不唯一
- 以下代码实现与上面略有不同,首先查找值为key的值,没找到则并递归左右查找
- 若在叶子结点处找到将其置为NULL直接删去即可
- 若在非叶结点处找到,则用该结点的直接前驱(或直接后继)权值代替该结点,然后删去这个直接前驱(或直接后继)
- 具体代码
450. 删除二叉搜索树中的节点(二叉搜索树+删除)
![](https://img-home.csdnimg.cn/images/20240711042549.png)