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。两种删除类型都有效