Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tree 二叉树删除一个子节点_Tree_Binary Tree_Binary Search Tree - Fatal编程技术网

Tree 二叉树删除一个子节点

Tree 二叉树删除一个子节点,tree,binary-tree,binary-search-tree,Tree,Binary Tree,Binary Search Tree,我有一个关于BST删除一个子节点案例的非常简单的问题 我想检查我的根节点有一个子节点,而子节点又有两个子节点的情况。它还应该移除整个树吗 因为我有 5 / 6 / \ 9 10 如果我删除(5)。它是否应该删除整个树,因为5只有一个子节点ie 6,而6又有两个子节点。当删除单子条件的根5时,6是否也应该只有一个子节点,或者我们不关心6有多少子节点当一个节点只有一个子节点时,您可以删除它并在其位置移植它的子节点(无论子节点的子树是什么)同时保留二进

我有一个关于BST删除一个子节点案例的非常简单的问题

我想检查我的根节点有一个子节点,而子节点又有两个子节点的情况。它还应该移除整个树吗

因为我有

      5
     / 
    6  
   / \
  9  10
如果我删除(5)。它是否应该删除整个树,因为5只有一个子节点ie 6,而6又有两个子节点。当删除单子条件的根5时,6是否也应该只有一个子节点,或者我们不关心6有多少子节点当一个节点只有一个子节点时,您可以删除它并在其位置移植它的子节点(无论子节点的子树是什么)同时保留二进制搜索树属性。以下是一个例子:

      7
     / \
    5   9
   /
  3
 / \
1   4
然后,如果我删除5并用它唯一的子树替换它,我得到

    7
   / \
  3   9
 / \
1   4

删除二叉树中的节点只涉及三种情况

  • 正在删除叶节点[没有子节点的节点]
  • 正在删除具有1个子节点的节点
  • 正在删除具有2个子节点的节点
删除叶节点,只需释放节点空间并将父节点的子链接设为null

删除具有一个子节点的节点删除该节点并将其子节点设为子节点

      10
     / \
    5   15
   /     \
  2      17  
 / \
1   3
在这里,如果我们希望删除5,那么将2作为10的子级,这样树就变为

      10
     / \
    2   15
   / \    \
  1   3   17
这也适用于从树中删除15


这不是二叉搜索树!