Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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
Algorithm 二叉树删除_Algorithm_Binary Tree - Fatal编程技术网

Algorithm 二叉树删除

Algorithm 二叉树删除,algorithm,binary-tree,Algorithm,Binary Tree,我有一个二叉树,和预序遍历。 这是我的树 15 / \ 10 23 /\ /\ 5 12 20 30 / / 11 25 \ 27 所以预购的结果是:1510121230302527。没关系 然后我删除了5、12和23个元素 我应该买这个吗 15 / \ 10 27 \ /\ 11 20

我有一个二叉树,和预序遍历。 这是我的树

      15
     / \
   10   23
   /\   /\
  5 12 20 30
    /     /
   11    25
          \
          27  
所以预购的结果是:1510121230302527。没关系

然后我删除了5、12和23个元素

我应该买这个吗

          15
         / \
       10   27
        \   /\
        11 20 30
               \
               25
结果:15112703025

还是这个

      15
     / \
   10   25
    \   /\
    11 20 30
          /
         27 
结果:15112503027

另外,我有第二个病例。如果不正确,删除有什么错


UPD:那么第二个更新的变量是正确的?

如果您希望其余元素的预排序遍历与删除之前的预排序遍历一致,那么您的树应该如下所示:

   15
  / \
10   20
 \    \
 11    30
       /
      25
       \
        27
删除方法是:


如果存在已删除节点的左子树,请将左子树的根移动到已删除位置。跟随(以前的)左子树中的右子树链接,并将右子树附加到第一个空的右链接。如果没有左子树,请将右子树的根移动到删除位置。

您的第二个案例几乎正确。27将是30的左节点。删除(子)树的顶部节点时,可以将该节点替换为左分支的最右侧节点或右分支的最左侧节点。在本例中,您已将30替换为右分支最左边的值,即25。您必须递归地执行此操作,因为25有自己的分支。一旦要删除的目标节点成为叶子,请将其删除

第一步:

      15
     / \
   10   25
    \   /\
    11 20 30
          /
         23
          \
           27
第二步:

      15
     / \
   10   25
    \   /\
    11 20 30
          /
         27
        / 
       23    
第三(删除):


完全依赖于树实现,尤其是删除实现。这意味着没有单一的答案,或者更重要的是,这两个答案都可能是正确的。此外,根据您的实现,它甚至可能不仅取决于树的初始状态,还取决于到达该点的插入/删除顺序。@Nikita:为什么要进行预顺序遍历?对于搜索树,你通常会按顺序遍历。它只是一棵二叉树还是(应该是)一棵二叉搜索树?我只需要实现预排序,没有特殊目的。那么,任何保留未删除元素的东西都可以。
      15
     / \
   10   25
    \   /\
    11 20 30
          /
         27