首页 文章

从二叉搜索树中删除节点

提问于
浏览
1

我理解删除具有两个子树的节点时的想法:I "erase"节点's value and replace it with either its predecessor from the left subtree' s值或右子树值的后继值,然后删除该节点 .

但是,如果我选择右子树的后继者或左子树的前任,这是否重要?或者只要在执行删除后仍然有二进制搜索树,它是否有效?

2 回答

  • 0

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

    请记住,当您获得有序前导节点或有序后继节点时,必须在该节点上调用delete操作 .

  • 0

    您选择更换哪一个并不重要 . 事实上,你可能需要两者 .

    看看下面的BST .

    7    
       / \    
      4   10    
     / \   /    
    1   5  8
     \
      3
    

    要删除 1 ,您需要将 1 替换为右节点 3 .

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

相关问题