Data structures 从二叉搜索树中删除节点

Data structures 从二叉搜索树中删除节点,data-structures,binary-search-tree,Data Structures,Binary Search Tree,我理解删除具有两个子树的节点时的想法:删除节点的值并用左子树值中的前一个替换它,或用右子树值中的后一个替换它,然后删除该节点 但是,我是从右子树中选择继任者还是从左子树中选择前置者,这有关系吗?或者,只要在执行删除操作后我仍然有一个二叉搜索树,那么这两种方法都有效吗?如果节点有两个子节点,则执行删除操作的两种方法都有效 请记住,当您获取顺序前置节点或顺序后续节点时,必须在该节点上调用删除操作。选择替换哪个节点无关紧要。事实上,你可能两者都需要 看下面的BST 7 / \

我理解删除具有两个子树的节点时的想法:删除节点的值并用左子树值中的前一个替换它,或用右子树值中的后一个替换它,然后删除该节点


但是,我是从右子树中选择继任者还是从左子树中选择前置者,这有关系吗?或者,只要在执行删除操作后我仍然有一个二叉搜索树,那么这两种方法都有效吗?

如果节点有两个子节点,则执行删除操作的两种方法都有效


请记住,当您获取顺序前置节点或顺序后续节点时,必须在该节点上调用删除操作。

选择替换哪个节点无关紧要。事实上,你可能两者都需要

看下面的BST

    7    
   / \    
  4   10    
 / \   /    
1   5  8
 \
  3
要删除1,需要将1替换为右侧节点3


要删除10,需要将10替换为左节点8。

两种删除类型都有效