二进制树删除说空指针

时间:2014-02-17 07:15:58

标签: java

到目前为止我制作了我的二叉树它可以添加节点你可以选择你想要添加一个子节点的父节点但是问题是每当我删除一个节点它确实删除它有时它会说空指针异常当我显示我的节点还在那里。这是我的删除方法:

   public void delete(Node node){ 
        if (node! =null) { 
            if(node.value.equals(nodeToDelete)) { 
                node=null;
            } 
            delete(node.left); 
            delete(node.right); 
            }
        }
    }

我已经定义了我的节点,我的add方法,而nodeToDelete是一个字符串,而且事先是all.tnx

3 个答案:

答案 0 :(得分:0)

sometimes it say null pointer exception。我认为只有当您的NPE没有值时才会引发node

您需要在此处查看代码,如何定义value

if(node.value.equals(nodeToDelete)) { 

答案 1 :(得分:0)

问题是您删除了节点,然后尝试删除其子节点。这会导致空指针异常。首先,您必须删除子项,然后删除节点。

我认为二叉树中的删除操作稍微复杂一些。您应该考虑3种不同的情况:

  • 节点是叶子
  • 节点有一个孩子
  • 该节点有两个孩子

请阅读Wikipedia article about binary tree并尝试重新实施。

答案 2 :(得分:0)

当您首先将节点设置为null然后访问此节点的某些部分时,NPE在静态上是可预见的 - 因此,首先删除子节点,然后将节点本身设置为null。