/**
* 二叉搜索树的删除一般分为三种情况;
* 1. 要删除的节点本身是叶子结点 -> 直接删除
* 2. 要删除的节点本身只有一个孩子节点 -> 用孩子节点替换他
* 3. 要删除的节点本身有两个孩子节点 -> 找到该节点A 的后继节点(比该节点大的最小节点,也就是右子树的最左叶子结点)B 然后用B替换A 最后再右子树中删除B(又可以分为 1、2 按对应的情况处理即可)
*
* @param root
* @param value
* @return
*/
public TreeNode<Integer> delete(TreeNode<Integer> root, Integer value) {
//如果root为空 则直接返回null,此时可分为两种情况:1、二叉搜索树根节点本身为空;2、未找到目标节点
if (root == null) {
return null;
}
数据结构——二叉搜索树之节点删除
最新推荐文章于 2023-12-08 22:08:44 发布